Cannot be cast to class because they are in unnamed module of loader 'app'
JavaSpring BootJava 9Java ModuleJava 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.