由于它们位于加载程序“ app”的未命名模块中,因此无法转换为类

Fra*_*teo 23 java spring-boot java-9 java-module

我正在尝试从生成的源创建一个bean wsdl2java

每次我尝试运行Spring Boot应用程序时,都会出现以下错误:

造成原因:java.lang.ClassCastException:org.apache.cxf.endpoint.ClientImpl类无法转换为com.xignite.services.XigniteCurrenciesSoap类(org.apache.cxf.endpoint.ClientImpl和com.xignite.services.XigniteCurrenciesSoap是在加载程序“ app”的未命名模块中)

我不确定我到底如何将生成的源作为模块包含在主Spring Boot应用程序中。

我的目录结构是:

??? build
?   ??? generatedsources
?       ??? src
?           ??? main
?               ??? java
?                   ??? com
?                       ??? xignite
?                           ??? services
?      
??? src
    ??? main
        ??? java
        ?   ??? io
        ?       ??? mateo
        ?           ??? stackoverflow
        ?               ??? soapconsumption
        ??? resources
           ??? wsdls
Run Code Online (Sandbox Code Playgroud)

相关系统信息:

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)
Run Code Online (Sandbox Code Playgroud)
  • Spring Boot 2.1.2发布
  • 摇篮5.2

我还在这里将项目上传到Github上:https : //github.com/ciscoo/soap-consumption-spring-boot

ori*_*rab 31

我有一个类似的案例,并且(正如@Holger 在评论中所提到的)消息中的模块信息只是具有误导性 - 这是尝试将某些内容转换为不匹配的内容的实际案例。

在您的情况下,ClientImpl根本不是XigniteCurrenciesSoap.

  • 我有一个类似的问题,并认为不可能是 ClassCastException。找到这个答案后,我再次正确检查了异常,结果发现我是从不同包中具有相同名称的超类扩展的。因此,尽管它可能看起来像是一个不同的问题,但它确实是一个 ClassCastException。 (3认同)
  • 当我问这个问题时,我对 Apache CXF 还很陌生。类转换异常的原因是因为我使用 JaxWsClientFactoryBean 而不是 JaxWsProxyFactoryBean。前者返回一个 ClientImpl,而后者返回一个必须转换的代理。我正在做一些新的工作并记住了这个问题。 (3认同)
  • 就我而言,我尝试将 List<Object> 转换为 List<MyInterface> 并遇到同样的问题 (2认同)