1. ホーム
  2. java

ローダー'app'の無名モジュールにあるため、クラスへキャストできない

2023-09-18 17:25:01

質問

で生成されたソースから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' の無名モジュールにあります。 ローダー '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。
  • Gradle 5.2

Githubにもプロジェクトをアップロードしましたので、こちらをご覧ください。 https://github.com/ciscoo/soap-consumption-spring-boot

どのように解決するのですか?

私は同様のケースを経験しました。(コメントで @Holger が言及したように)メッセージ内のモジュール情報は単に誤解を招くものです。これは、一致しないものに何かをキャストしようとする実際のケースです。

あなたの場合 ClientImpl のサブタイプではありません。 XigniteCurrenciesSoap .