programing

자바.java.javanoClassDefFoundError: javax/xml/soap/SOAP 예외

codeshow 2023. 8. 26. 00:08
반응형

자바.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

반응형