Java 无法强制转换到类,因为它们位于加载程序的未命名模块';app&x27;
我正在尝试从由生成的源创建一个bean 每次我尝试运行Spring Boot应用程序时,都会出现以下错误: 原因:java.lang.ClassCastException:类 无法将org.apache.cxf.endpoint.ClientImpl强制转换为类 com.xignite.services.xignitecurrencessoap (org.apache.cxf.endpoint.ClientImpl和 com.xignite.services.xignitecurrencessoap位于的未命名模块中 加载程序“应用程序”) 我不确定如何将生成的源代码作为一个模块包含在我的主Spring Boot应用程序中 我的目录结构是:Java 无法强制转换到类,因为它们位于加载程序的未命名模块';app&x27;,java,spring-boot,java-9,java-module,Java,Spring Boot,Java 9,Java Module,我正在尝试从由生成的源创建一个bean 每次我尝试运行Spring Boot应用程序时,都会出现以下错误: 原因:java.lang.ClassCastException:类 无法将org.apache.cxf.endpoint.ClientImpl强制转换为类 com.xignite.services.xignitecurrencessoap (org.apache.cxf.endpoint.ClientImpl和 com.xignite.services.xignitecurrencesso
├── 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)
- 弹簧靴2.1.2.1释放
- 梯度5.2
在您的情况下,
ClientImpl
根本不是xignitecurrencessoap
的子类型,stacktrace试图告诉您已将xignitecurrencessoap
强制转换为ClientImpl
例如下面的例子:
Object returnObj= getXigniteCurrenciesSoap();
return (ClientImpl) returnObj;
您必须在代码中找到并修复它。这里对wsdl不是很确定……但是,您是否尝试将
module info.java
添加到您的项目和/或确保您所依赖的模块(对于类org.apache.cxf.endpoint.ClientImpl
)在模块路径而不是类路径上解析。错误消息中没有“因为”。本附录告诉您的是,这两个类都位于同一个模块中,即加载程序“app”的未命名模块中,这有助于读者理解这个问题与模块完全无关ClientImpl
根本不是XigniteCurrencessOAP的子类型;这是一个普通的ClassCastException
。在我的例子中,它有点不同。由于java不同版本之间的冲突,有时会发生类强制转换异常。在pom.xml中,我设置使用“1.8但在Intellje IDE中,我设置使用java版本11。在将java版本从11改为8之后,这个问题为我解决了。我有一个类似的问题,我认为这不可能是ClassCastException。找到这个答案后,我再次正确地检查了异常,结果证明我是从另一个包中具有相同名称的超类扩展而来的。因此,尽管这看起来可能是一个不同的问题,但它确实是一个ClassCastException。在我问这个问题时,我对ApacheCXF还是相当陌生的。类强制转换异常的原因是因为我使用的是JaxWsClientFactoryBean而不是JaxWsProxyFactoryBean。前者返回ClientImpl,而后者返回必须强制转换的代理。我正在为工作做一些新的事情,我记得这个问题。