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

时间:2019-02-05 14:43:42

标签: java spring-boot java-9 java-module

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

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

  

产生于:java.lang.ClassCastException:class   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

相关系统信息:

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
  • 5.2级

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

2 个答案:

答案 0 :(得分:7)

我有一个类似的情况,并且(如@Holger在评论中所提到的)消息中的模块信息完全是误导性的-这是试图将某些内容转换为不匹配的内容的实际情况。 / p>

就您而言,ClientImpl根本不是XigniteCurrenciesSoap的子类型。

答案 1 :(得分:2)

stacktrace试图告诉您您已将XigniteCurrenciesSoap强制转换为ClientImpl

例如以下示例:

Object returnObj= getXigniteCurrenciesSoap();
return (ClientImpl) returnObj;

您必须找出在代码中的位置并加以修复。