programing

클래스에 캐스팅할 수 없습니다. 이름이 없는 로더 'app' 모듈에 있습니다.

nicescript 2023. 4. 2. 20:31
반응형

클래스에 캐스팅할 수 없습니다. 이름이 없는 로더 'app' 모듈에 있습니다.

에서 생성된 소스에서 빈을 생성하려고 합니다.

Spring Boot 앱을 실행하려고 할 때마다 다음 오류가 나타납니다.

원인: java.lang.ClassCastException : class org.apache.cxf.endpoint.ClientImpl을 클래스 com에 캐스팅할 수 없습니다.시그나이트서비스를 제공합니다.Xignite 통화Soap(또는.apache.cxf.endpoint).ClientImpl 및 com.시그나이트서비스를 제공합니다.Xignite 통화Soap은 로더 '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

비슷한 케이스가 있었습니다만, (@Holger가 코멘트에서 언급했듯이) 메시지 내의 모듈 정보는 단순히 오해를 불러일으킬 뿐입니다.이것은, 일치하지 않는 것에 무언가를 캐스트 하려고 하는 실제의 경우입니다.

당신의 경우,ClientImpl단순히 아형이 아니다XigniteCurrenciesSoap.

스택 트레이스에서는 캐스트한 것을 알려주고 있습니다.XigniteCurrenciesSoap로.ClientImpl.

다음 예시와 같습니다.

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

코드에서 어디서 그런 짓을 했는지 알아내서 고쳐야 해

저도 같은 문제가 있었어요.제 경우엔 이미 다른 곳에서 같은 이름의 수업이 있었던 것이 문제였습니다.그러니 반 이름을 바꿔보세요.

나는 예외 없이 아주 비슷해지고 있었다.

java.lang.ClassCastException: class [B cannot be cast to class org.apache.avro.generic.GenericRecord ([B is in module java.base of loader 'bootstrap'; org.apache.avro.generic.GenericRecord is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader 

근본 원인은 내 Gradle 종속성이 제외 스테이트먼트를 가지고 있었기 때문입니다.

exclude group: 'org.springframework.cloud', module: 'spring-cloud-stram-binder-kafka',

아래와 같이 코멘트를 드렸더니, 그 후는 정상적으로 동작하고 있습니다.

implementation ('com.xyz.lux:lux-acitor:1.25.0') {
  //exclude group: 'org.springframework.cloud', module: 'spring-cloud-stream-binder-kafka'
  exclude group: 'org.slf4j', module: 'slf4j-reload4j'
  exclude group: 'io.confluent', module: 'confluent-log4j'
}

언급URL : https://stackoverflow.com/questions/54536895/cannot-be-cast-to-class-they-are-in-unnamed-module-of-loader-app

반응형