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

2022-08-31 10:20:19

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

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

Caused by: java.lang.ClassCastException: class org.apache.cxf.endpoint.ClientImpl can cast to class com.xignite.services.XigniteCurrenciesSoap (org.apache.cxf.endpoint.ClientImpl and com.xignite.services.XigniteCurrenciesSoap 位于 loader '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)
  • 弹簧靴 2.1.2.发布
  • 等级 5.2

我也把这个项目上传到Github上:https://github.com/ciscoo/soap-consumption-spring-boot


答案 1

我有一个类似的情况,并且(正如@Holger在评论中提到的)消息中的模块信息只是误导 - 这是一个试图将某些东西投射到与它不匹配的东西的实际情况。

在您的情况下,根本不是 的子类型。ClientImplXigniteCurrenciesSoap


答案 2

堆栈跟踪试图告诉您,您已将 转换为 。XigniteCurrenciesSoapClientImpl

如下面的例子:

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

你必须找出你在代码中在哪里做了这件事并修复它。


推荐