Cannot be cast to class because they are in unnamed module of loader 'app'

JavaSpring BootJava 9Java Module

Java Problem Overview


I'm trying to create a bean from sources that were generated by wsdl2java.

Every time I try to run my Spring Boot app, I get the following error:

> Caused by: java.lang.ClassCastException: class > org.apache.cxf.endpoint.ClientImpl cannot be cast to class > com.xignite.services.XigniteCurrenciesSoap > (org.apache.cxf.endpoint.ClientImpl and > com.xignite.services.XigniteCurrenciesSoap are in unnamed module of > loader 'app')

I'm not sure how exactly I'm to include generated sources in my main Spring Boot application as a module.

My directory structure is:

├── build
│   └── generatedsources
│       └── src
│           └── main
│               └── java
│                   └── com
│                       └── xignite
│                           └── services
│      
└── src
    └── main
        ├── java
        │   └── io
        │       └── mateo
        │           └── stackoverflow
        │               └── soapconsumption
        └── resources
           └── wsdls

Relevant system info:

openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
  • Spring Boot 2.1.2.RELEASE
  • Gradle 5.2

I've also uploaded the project onto Github here: https://github.com/ciscoo/soap-consumption-spring-boot

Java Solutions


Solution 1 - Java

I had a similar case, and (as mentioned by @Holger in the comment) the module info in the message is simply misleading - this is an actual case of trying to cast something to something that doesn't match it.

In your case, ClientImpl simply is not a subtype of XigniteCurrenciesSoap.

Solution 2 - Java

The stacktrace is trying to tell you that you have casted XigniteCurrenciesSoap to ClientImpl.

Such as the example below:

Object returnObj= getXigniteCurrenciesSoap();
return (ClientImpl) returnObj;

You have to find out where you did that in your code and fix it.

Solution 3 - Java

I had the same problem. The problem in my case was that I already had a class with the same name in another place. So try changing the class name.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCiscoView Question on Stackoverflow
Solution 1 - JavaorirabView Answer on Stackoverflow
Solution 2 - JavaHotpot with KrautView Answer on Stackoverflow
Solution 3 - JavazaherView Answer on Stackoverflow