Java 无法强制转换到类,因为它们位于加载程序的未命名模块';app&x27;

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

我正在尝试从由生成的源创建一个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应用程序中

我的目录结构是:

├── 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
我还将该项目上传到Github上:

我也遇到过类似的情况,并且(正如@Holger在评论中提到的)消息中的模块信息只是误导性的-这是一个试图将某个内容转换为与之不匹配的内容的实际情况


在您的情况下,
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,而后者返回必须强制转换的代理。我正在为工作做一些新的事情,我记得这个问题。