자바.java.javanoClassDefFoundError: javax/xml/soap/SOAP 예외
저는 Spring을 이용하여 웹 서비스를 만들었습니다.내장된 Tomcat 서버에서 실행할 때 잘 작동합니다.그러나 JAR 파일로 패키지화하여 실행할 때java -jar
명령입니다. 이 예외를 수신합니다.
내 서비스는 간단한 비누 요청을 보내고 서버 응답은 다음과 같습니다.
"exception": "java.lang.NoClassDefFoundError",
"message": "javax/xml/soap/SOAPException",
그게 제가 포스트맨에서 받는 반응입니다.
제가 문제를 찾을 수 있는 아이디어.
다음 내용을 폼 파일에 추가하여 문제를 해결했습니다.
<!-- https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api -->
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>javax.xml.soap-api</artifactId>
<version>1.4.0</version>
</dependency>
Java SE 8에는 패키지가 포함됩니다.java.xml.soap
.
JavaSE 9 이동된 패키지javax.xml.soap
모듈로java.xml.ws
.
JEE와 공유된 모듈(예:java.xml.ws
)는 JavaSE 9에 포함되어 있지만,
Java SE의 미래 버전에서 제거하는 것이 더 이상 권장되지 않습니다.
기본 모듈 경로에 없습니다.
빠른 해결 방법은 다음 중 하나입니다.
JRE 8을 사용하여 병을 작동합니다.$MY_JRE8_HOME/bin/java -jar my.jar
또는
JRE 9용 모듈 추가:java --add-modules java.xml.ws -jar my.jar
장기적으로 다음과 같은 모듈을 사용하는 JavaSE 프로젝트java.xml.ws
다른 라이브러리처럼 모듈을 명시적으로 포함해야 합니다.
https://stackoverflow.com/a/46359097 을 참조하십시오.
JDK 9 마이그레이션 가이드: JEE와 공유된 모듈이 기본적으로 해결되지 않음을 참조하십시오.
(https://spring.io/guides/gs/producing-web-service/) 의 압축된 SOAP 웹 서비스 프로젝트를 통해 NoClassDefError 및 해결 방법을 재현했습니다.
예, Java 11에서 java.xml.soap이 완전히 제거되었습니다. java.lang.NoClassDefFoundError: javax/xml/soap/SOAP 예외는 다음 종속성을 추가하여 제거할 수 있습니다.
<dependency>
<groupId>jakarta.xml.soap</groupId>
<artifactId>jakarta.xml.soap-api</artifactId>
<version>2.0.0-RC3</version>
</dependency>
그러나 나중에 javax.xml.soap을 보게 될 것입니다.SOAP 예외: SAAJ 메타팩토리를 만들 수 없습니다. 제공자 com.sun.xml.internal.messaging.saaaj.soap.SAAJMetaFactoryImpl을 찾을 수 없습니다.이 문제는 다음과 같은 종속성을 추가하여 해결할 수 있습니다.
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.1</version>
</dependency>
희망, 도움이 됩니다!
다음 종속성을 추가합니다. 그러면 작동할 것입니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.6</version>
</dependency>
실행 중인 코드(SpringBoot)는 다음 링크를 참조하십시오.SOAPWS + Java10) Github - SpringBoot Soap Server Github - SpringBoot Soap 클라이언트
저는 이 문제를 해결하기 위해 이것을 가져왔습니다: https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api/1.4.0
이 종속성을 추가하면 문제가 해결됩니다.
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
JAX-WS 종속성 라이브러리 "jaxws-api.jar"가 없습니다.시도:
compile group: 'javax.xml.ws', name: 'jaxws-api', version: '2.3.1'
그라들 또는:<dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.3.1</version> </dependency>
위의 모든 사람들을 위해 이미 폐쇄된 것을 알고 있지만, 클래스 경로에 jakarta-xml.soap-api와 saaaj jars를 추가했음에도 불구하고 여전히 이 문제에 직면해 있습니다.
내가 그것을 작동시키기 위해 놓치고 있는 것.jakarta jar 대신 javax-.xml-soap-api를 사용해 시도했지만 여전히 동일한 오류입니다.어떻게든 항아리를 식별할 수 없습니다.
언급URL : https://stackoverflow.com/questions/48626824/java-lang-noclassdeffounderror-javax-xml-soap-soapexception
'programing' 카테고리의 다른 글
안드로이드 브라우저에서 내 앱을 시작하는 링크를 만드시겠습니까? (0) | 2023.08.26 |
---|---|
전체 Android 앱에 대한 기본 글꼴 제품군을 설정하는 방법 (0) | 2023.08.26 |
실행 중인 노드.제이슨 안드로이드 (0) | 2023.08.26 |
절차를 실행하는 방법? (0) | 2023.08.26 |
잠금 모드 유형을 활성화하는 방법.Spring Data JPA를 사용하여 엔티티를 조회할 때의 SEPMISTIC_WRITE? (0) | 2023.08.26 |