Java 9에서 java.lang.NoClassDefFoundError : javax / xml / bind / JAXBException을 해결하는 방법
Java 6/7/8에서 JDK의 일부로 제공되는 JAXB API 클래스를 사용하는 코드가 있습니다. Java 9로 동일한 코드를 실행하면 런타임에 JAXB 클래스를 찾을 수 없다는 오류가 발생합니다.
JAXB 클래스는 Java 6 이후 JDK의 일부로 제공되었는데, Java 9에서 더 이상 이러한 클래스를 찾을 수없는 이유는 무엇입니까?
JAXB API는 Java EE API로 간주되므로 Java SE 9의 기본 클래스 경로에 더 이상 포함되지 않습니다. Java 11에서는 JDK에서 완전히 제거됩니다.
Java 9에는 모듈 개념이 도입되었으며 기본적으로 java.se
집계 모듈은 클래스 경로 (또는 모듈 경로)에서 사용할 수 있습니다. 이름에서 알 수 있듯이 java.se
집계 모듈에는 전통적으로 Java 6/7/8과 함께 번들로 제공되는 Java EE API가 포함 되지 않습니다 .
다행히 JDK 6/7/8에서 제공되는 이러한 Java EE API는 여전히 JDK에 있지만 기본적으로 클래스 경로에 없습니다. 추가 Java EE API는 다음 모듈에서 제공됩니다.
java.activation
java.corba
java.transaction
java.xml.bind << This one contains the JAXB APIs
java.xml.ws
java.xml.ws.annotation
빠르고 더러운 솔루션 : (JDK 9/10 만 해당)
JAXB API를 런타임에 사용할 수 있도록하려면 다음 명령 줄 옵션을 지정합니다.
--add-modules java.xml.bind
그러나 Java 8에서 작동하려면 여전히 이것이 필요합니다! 이전 JDK로
지정하려고 --add-modules
하면 인식 할 수없는 옵션이기 때문에 폭발합니다. 두 가지 옵션 중 하나를 제안합니다.
JDK_JAVA_OPTIONS
환경 변수를 사용하여 모든 Java 9+ 전용 옵션을 설정할 수 있습니다 . 이 환경 변수가되고 자동으로 읽기 에 의해java
자바 9+에 대한 발사기.- 을 추가하여
-XX:+IgnoreUnrecognizedVMOptions
JVM이 폭발하는 대신 인식되지 않는 옵션을 자동으로 무시하도록 할 수 있습니다. 하지만 조심하세요! 사용하는 다른 명령 줄 인수는 더 이상 JVM에서 유효성을 검사하지 않습니다. 이 옵션은 Oracle / OpenJDK 및 IBM JDK (JDK 8sr4 기준)에서 작동합니다.
대체 빠른 솔루션 : (JDK 9/10 전용) 옵션
을 지정하여 런타임에 위의 모든 Java EE 모듈을 사용 가능하게 만들 수 있습니다 --add-modules java.se.ee
. java.se.ee
모듈을 포함하는 집계 모듈 java.se.ee
뿐만 아니라 위의 자바 EE API 모듈.
적절한 장기 솔루션 : (JDK 9 이상)
위에 나열된 Java EE API 모듈 은 Java 11 에서 제거 될 예정@Deprecated(forRemoval=true)
이므로 모두 표시되어 있습니다. 따라서 접근 방식은 Java 11에서 더 이상 기본적으로 작동하지 않습니다.--add-module
Java 11 이상에서 수행해야 할 작업은 클래스 경로 또는 모듈 경로에 Java EE API 사본을 포함하는 것입니다. 예를 들어 다음과 같이 JAX-B API를 maven 종속성으로 추가 할 수 있습니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
Java 모듈성에 대한 자세한 내용은 JEP 261 : 모듈 시스템을 참조하십시오 .
Gradle 또는 Android Studio 개발자 : (JDK 9 이상)
build.gradle 파일에 다음 종속성을 추가하십시오.
dependencies {
// JAX-B dependencies for JDK 9+
implementation "javax.xml.bind:jaxb-api:2.2.11"
implementation "com.sun.xml.bind:jaxb-core:2.2.11"
implementation "com.sun.xml.bind:jaxb-impl:2.2.11"
implementation "javax.activation:activation:1.1.1"
}
제 경우에는 (spring boot fat jar) pom.xml에 다음을 추가합니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
이 솔루션 중 어느 것도 최근 JDK 9.0.1에서 잘 작동하지 않았습니다.
이 종속성 목록은 적절한 기능에 충분하므로 명시 적으로 지정할 필요가 없습니다--add-module
(이 종속성의 pom에 지정되어 있음). 필요한 것은이 종속성 목록을 지정하는 것뿐입니다.
<dependencies>
<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-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
이것은 나를 위해 일했습니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.7.0</version>
</dependency>
최신 정보
@Jasper가 제안했듯이 전체 EclipseLink 라이브러리에 의존하지 않으려면 EclipseLink MOXy에 의존 할 수도 있습니다.
메이븐
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.moxy</artifactId>
<version>2.7.3</version>
</dependency>
Gradle
compile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy', version: '2.7.3'
추가 인수없이 JRE 8 또는 JRE 9 모두에서 실행할 수있는 * .jar를 생성하는 Java 8 앱의 종속성으로 사용됩니다.
또한 JAXB API를 사용하기 전에 어딘가에서 실행해야합니다.
System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");
해결 방법으로 지금까지 훌륭하게 작동합니다. 그래도 완벽한 솔루션처럼 보이지 않습니다 ...
jdk 9 이상 버전을 사용하는 경우 Java 버전이 pom에 추가하기 때문입니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
컴파일 및 런타임에 스위치를 추가하십시오. --add-modules java.xml.bind
javac --add-modules java.xml.bind <java file name>
java --add-modules java.xml.bind <class file>
JDK 9
모듈에 대한 좋은 소개는 https://www.youtube.com/watch?v=KZfbRuvv5qc 에서도 확인할 수 있습니다.
모든 JDK에 대한 깨끗한 솔루션> = 9
빌드에 두 개의 종속성을 추가해야합니다.
- jaxb-api
- jaxb 구현
구현으로 이전 com.sun 클래스 / 라이브러리를 제거하기 위해 glassfish의 참조 구현을 사용하기로 선택했습니다. 결과적으로 내 maven 빌드에 추가했습니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
버전 2.3.1부터는 javax.activation을 더 이상 추가 할 필요가 없습니다. ( https://github.com/eclipse-ee4j/jaxb-ri/issues/1222 참조 )
이 문제를 해결하기 위해 프로젝트에 일부 JAR 파일을 가져 왔습니다.
- javax.activation-1.2.0.jar
- jaxb-api-2.3.0.jar
http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar
- jaxb-core-2.3.0.jar
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar
- jaxb-impl-2.3.0.jar
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar
- 위의 파일을 다운로드하여 프로젝트의 libs 폴더에 복사하십시오.
- Java 빌드 경로에 가져온 JAR 파일 추가
--add-modules=java.xml.bind
JVM 옵션을 사용 하여 JVM 런타임 환경에 xml bind 모듈을 추가 할 수 있습니다 .
예 : java --add-modules=java.xml.bind XmlTestClass
이것은 나를 위해 일했습니다. jaxb-api 만 추가하는 것만으로는 충분하지 않았습니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
Build.gradle로 이동하여 Java 9 또는 Java 10에 대한 종속성을 아래에 추가하십시오.
sourceCompatibility = 10 // You can also decrease your souce compatibility to 1.8
//java 9+ does not have Jax B Dependents
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
2019 년 4 월 업데이트
JAXB 릴리스의 Changelong은 https://javaee.github.io/jaxb-v2/doc/user-guide/ch02.html에 있습니다.
발췌 :
4.1. Changes between 2.3.0.1 and 2.4.0
JAXB RI is now JPMS modularized:
All modules have native module descriptor.
Removed jaxb-core module, which caused split package issue on JPMS.
RI binary bundle now has single jar per dependency instead of shaded fat jars.
Removed runtime class weaving optimization.
4.2. Changes between 2.3.0 and 2.3.0.1
Removed legacy technology dependencies:
com.sun.xml.bind:jaxb1-impl
net.java.dev.msv:msv-core
net.java.dev.msv:xsdlib
com.sun.xml.bind.jaxb:isorelax
4.3. Changes between 2.2.11 and 2.3.0
Adopt Java SE 9:
JAXB api can now be loaded as a module.
JAXB RI is able to run on Java SE 9 from the classpath.
Addes support for java.util.ServiceLoader mechanism.
Security fixes
신뢰할 수있는 링크는 https://github.com/eclipse-ee4j/jaxb-ri#maven-artifacts에 있습니다.
JAXB 아티팩트에 대한 Maven 좌표
jakarta.xml.bind : jakarta.xml.bind-api : JAXB 용 API 클래스. JAXB에 대해 컴파일하는 데 필요합니다.
org.glassfish.jaxb : jaxb-runtime : JAXB 구현, xml과의 직렬화 및 직렬화 해제 자바 객체에 사용되는 런타임.
JAXB fat-jar 번들 :
com.sun.xml.bind : jaxb-impl : JAXB 런타임 fat jar.
org.glassfish.jaxb 아티팩트와 달리 이러한 jar에는 모든 종속성 클래스가 포함되어 있습니다. 이러한 아티팩트에는 JPMS 모듈 설명자가 포함되어 있지 않습니다. Maven 프로젝트에서는 org.glassfish.jaxb 아티팩트가 대신 사용되어야합니다.
org.glassfish.jaxb : jaxb-runtime : jar : 2.3.2는 다음을 가져옵니다.
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.2:compile
[INFO] | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
[INFO] | +- org.glassfish.jaxb:txw2:jar:2.3.2:compile
[INFO] | +- com.sun.istack:istack-commons-runtime:jar:3.0.8:compile
[INFO] | +- org.jvnet.staxex:stax-ex:jar:1.8.1:compile
[INFO] | +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.16:compile
[INFO] | \- jakarta.activation:jakarta.activation-api:jar:1.2.1:compile
원래 답변
다음 내 Maven 프로젝트에서 JAXB RI 사용해야 어떤 유물? Maven에서는 다음과 같은 프로필을 사용할 수 있습니다.
<profile>
<id>java-9</id>
<activation>
<jdk>9</jdk>
</activation>
<dependencies>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</profile>
종속성 트리는 다음을 표시합니다.
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.0:compile
[INFO] | +- org.glassfish.jaxb:jaxb-core:jar:2.3.0:compile
[INFO] | | +- javax.xml.bind:jaxb-api:jar:2.3.0:compile
[INFO] | | +- org.glassfish.jaxb:txw2:jar:2.3.0:compile
[INFO] | | \- com.sun.istack:istack-commons-runtime:jar:3.0.5:compile
[INFO] | +- org.jvnet.staxex:stax-ex:jar:1.7.8:compile
[INFO] | \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.13:compile
[INFO] \- javax.activation:activation:jar:1.1.1:compile
Eclipse에서이를 사용하려면 Oxygen.3a Release (4.7.3a) 이상, Ctrl-Alt-P라고 말하거나 프로젝트 Maven을 마우스 오른쪽 버튼으로 클릭 한 다음 프로필을 선택합니다.
Java Web Start Execution의 경우 다음과 같이 Andy Guibert의 제안을 사용할 수 있습니다.
<j2se version="1.6+"
java-vm-args="-XX:+IgnoreUnrecognizedVMOptions --add-modules=java.se.ee"/>
--add-modules의 추가 "="에 유의하십시오. 참조 이 오픈 JDK 티켓 또는의 "이해 런타임 액세스 경고"의 마지막 주 자바 플랫폼 스탠다드 에디션 오라클 JDK 9 마이그레이션 가이드 .
pom.xml에 javax.xml.bind 종속성 추가
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
이 URL을 따랐고 아래 설정이 정말 도움이되었습니다. Macbook Pro에서 STS IDE와 함께 Java 10을 사용합니다. 매력처럼 작동합니다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
2.0.5.RELEASE
Java 11에서 Spring Boot 를 사용하여 동일한 문제가 발생했습니다 .
javax.xml.bind:jaxb-api:2.3.0
혼자 추가 해도 문제가 해결되지 않았습니다. 또한 Spring Boot를 최신 Milestone으로 업데이트해야 2.1.0.M2
했기 때문에 다음 공식 릴리스에서 수정 될 것이라고 가정합니다.
이것은 Java 12에서 Apache Camel 2.24.1을 실행하는 종속성 문제를 해결했습니다.
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0.1</version>
</dependency>
대답은 아니지만 부록 : groovysh
JAVA_HOME이 Java 9 설치 ( java version "9.0.1"
정확히 말하면)를 가리키는 경우 실행 (Groovy 2.4.13)을 실행 하는 데 실패 했기 때문에 얻었습니다 .
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:107)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
Caused by: java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/JAXBContext
at org.codehaus.groovy.vmplugin.v5.Java5.configureClassNode(Java5.java:400)
at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:277)
at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:397)
...
..
.
..
...
at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:135)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.codehaus.groovy.tools.shell.Main.<init>(Main.groovy:66)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.codehaus.groovy.tools.shell.Main.main(Main.groovy:163)
... 6 more
해결책은 다음과 같습니다.
github.io 의 JAXB 프로젝트 로 이동합니다 ( "JAXB는 이중 라이센스에 따라 라이센스가 부여되었습니다 -CDDL 1.1 및 GPL 2.0 with Class-path Exception" ).
다운로드
jaxb-ri-2.3.0.zip
Java 인프라 파일 (제 경우에는
/usr/local/java/jaxb-ri/
) 을 넣을 때마다 압축을 풉니 다 . 다른 솔루션이 존재할 수 있습니다 (아마도 SDKMAN을 통해, 모르겠습니다)lib 하위 디렉토리의 jar가
CLASSPATH
. bash 시작시 시작된 스크립트를 통해 수행합니다.라는 이름으로/etc/profile.d/java.sh
다음 루프를 추가했습니다.
함수로 포장 ...
function extend_qzminynshg {
local BASE="/usr/local/java"
for LIB in jaxb-api.jar jaxb-core.jar jaxb-impl.jar jaxb-jxc.jar jaxb-xjc.jar; do
local FQLIB="$BASE/jaxb-ri/lib/$LIB"
if [[ -f $FQLIB ]]; then
export CLASSPATH=$FQLIB:$CLASSPATH
fi
done
}
extend_qzminynshg; unset extend_qzminynshg
그리고 작동합니다!
JavaEE는 이제 https://jakarta.ee/ 에 의해 관리되므로 2.3.2부터 새로운 Maven 좌표는 다음과 같습니다.
https://github.com/eclipse-ee4j/jaxb-ri#maven-artifacts
첫 번째 릴리스 된 jaxb. 버전은 2.3.2입니다.
<properties>
<jaxb.version>2.3.2</jaxb.version>
</properties>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>${jaxb.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${jaxb.version}</version>
</dependency>
좋아, 나는 같은 종류의 문제가 있었지만 Java 8을 사용하고 있었고이 오류가 계속 발생하여 대부분의 솔루션을 시도했습니다. 하지만 내 maven은 여전히 Java 9를 가리키고 있었지만 모든 것이 작동한다고 수정하자마자 전역 Java 버전을 8로 설정했지만.
이런 종류의 문제가있는 사람은 기본 Java를 사용하도록 Maven을 수정하는 방법을 확인하세요.
이전 답변 "Amazoncorretto로 전환하여 문제 해결"뉴스 답변 : corretto latest를 사용했지만 jdk 1.8과 비슷합니다. 어쨌든 수동으로 종속성을 추가해야합니다.
나를 위해 Java 11 및 gradle이 해결되었습니다.
plugins {
id 'java'
}
dependencies {
runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1'
}
maven에 jaxb 종속성을 추가해야합니다. glassfish 구현 버전 2.3.2는 새로운 jakarta EE jaxb api 버전 2.3.2와 완벽하게 호환됩니다.
<!-- API -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Runtime -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
</dependency>
나는 내가 파티에 늦었다는 것을 알고 있지만 내 실수는 결국 다른 솔루션이 필요합니다.
나는 원래 Tomcat 9로 depoloyed했고 7이 필요하다는 것을 깨달았습니다. 내 클래스 경로를 build.xml의 7 버전으로 다시 매핑하는 것을 잊었습니다.
바라건대 이것은 내가 한 것처럼이 간단한 문제를 간과 할 수있는 다른 누군가의 오류를 고칠 것입니다!
이것은 나를 위해 일했습니다 .Java 8에서 컴파일되는 스프링 부트 프로젝트가 있지만 언젠가 내 maven이 Java 11로 컴파일을 시작한 이유를 모르겠습니다 .Ubuntu에서 수정했습니다.
sudo update-java-alternatives -l
그것은 내 PC에서 availave JDK를 보여주었습니다.
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
그래서 마침내이 명령을 실행하여 원하는 것을 선택합니다.
sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
그게 전부입니다 . 명령 업데이트 대안을 사용하는 방법을 자세히 살펴 보겠습니다.
Java 8 대상을 위해 컴파일 할 때 사용해야하는 종속성 버전. Java 8, 11 및 12 JRE에서 테스트 된 애플리케이션입니다.
<!-- replace dependencies that have been removed from JRE's starting with Java v11 -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.8</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.8-b01</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.8-b01</version>
</dependency>
<!-- end replace dependencies that have been removed from JRE's starting with Java v11 -->
jaxws-maven-plugin
이 종속성을 추가하는 것만으로 SOAP 웹 서비스 (예 : 사용 ) 를 호출하는 경우 모든 JAXB 오류가 사라집니다.
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>webservices-rt</artifactId>
<version>2.4.3</version>
</dependency>
Java 13으로 테스트 됨
'Program Tip' 카테고리의 다른 글
git-merge --dry-run 옵션이 있습니까? (0) | 2020.09.30 |
---|---|
JavaScript에서 스택과 큐를 어떻게 구현합니까? (0) | 2020.09.30 |
로컬 git 커밋을 취소하는 방법 (0) | 2020.09.30 |
파일 및 관련 데이터를 가급적 JSON으로 RESTful 웹 서비스에 게시 (0) | 2020.09.30 |
기존 콜백 API를 프라 미스로 어떻게 변환합니까? (0) | 2020.09.30 |