【发布时间】:2019-06-29 10:02:52
【问题描述】:
我正在尝试从 wsdl2java 生成的源创建一个 bean。
每次我尝试运行我的 Spring Boot 应用程序时,都会收到以下错误:
引起:java.lang.ClassCastException:类 org.apache.cxf.endpoint.ClientImpl 不能转换为类 com.xignite.services.XigniteCurrenciesSoap (org.apache.cxf.endpoint.ClientImpl 和 com.xignite.services.XigniteCurrenciesSoap 位于未命名的模块中 加载程序“应用程序”)
我不确定如何将生成的源代码作为一个模块包含在我的主 Spring Boot 应用程序中。
我的目录结构是:
├── build
│ └── generatedsources
│ └── src
│ └── main
│ └── java
│ └── com
│ └── xignite
│ └── services
│
└── src
└── main
├── java
│ └── io
│ └── mateo
│ └── stackoverflow
│ └── soapconsumption
└── resources
└── wsdls
相关系统信息:
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
我还在这里将项目上传到 Github:https://github.com/ciscoo/soap-consumption-spring-boot
【问题讨论】:
-
对这里的 wsdl 不太确定...但是,您是否尝试将
module-info.java添加到您的项目和/或确保您所依赖的模块(对于org.apache.cxf.endpoint.ClientImpl类)是在模块路径而不是类路径上解析。 -
错误信息中没有“因为”。这个附录告诉你的是,这两个类都位于同一个模块中,加载器“app”的未命名模块,这有助于读者理解这个问题与模块完全无关。
ClientImpl根本不是XigniteCurrenciesSoap的子类型;这是一个普通的ClassCastException。 -
就我而言,它有点不同。由于不同版本的java之间的冲突,有时会发生Class Cast Exception。在 pom.xml 中我设置为使用“
1.8 但在 Intellje IDE 中我设置为使用 java 版本 11。将 java 版本从 11 更改为 8 后问题为我解决了。
标签: java spring-boot java-9 java-module