Java 6/7/8のJDKの一部として提供されているJAXB APIクラスを使用するコードがいくつかあります。Java 9で同じコードを実行すると、実行時にJAXBクラスが見つからないことを示すエラーが発生します。
JAXBクラスはJava 6以降、JDKの一部として提供されていますが、なぜJava 9はこれらのクラスを見つけられないのですか?
Java 6/7/8のJDKの一部として提供されているJAXB APIクラスを使用するコードがいくつかあります。Java 9で同じコードを実行すると、実行時にJAXBクラスが見つからないことを示すエラーが発生します。
JAXBクラスはJava 6以降、JDKの一部として提供されていますが、なぜJava 9はこれらのクラスを見つけられないのですか?
回答:
JAXB APIはJava EE APIと見なされるため、Java SE 9のデフォルトのクラスパスに含まれなくなりました。Java11では、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で動作させるには、これがまだ必要です!!!
--add-modules
古いJDKで指定しようとすると、認識されないオプションであるため、爆発します。次の2つのオプションのいずれかをお勧めします。
JDK_JAVA_OPTIONS
環境変数を使用して、Java 9以降のみのオプションを設定できます。この環境変数は、Java 9以降のランチャーによって自動的に読み取られjava
ます。-XX:+IgnoreUnrecognizedVMOptions
することで、JVMを爆発させる代わりに、認識されないオプションを警告なしで無視することができます。しかし注意してください!使用する他のコマンドライン引数は、JVMによって検証されなくなります。このオプションは、Oracle / OpenJDKおよびIBM JDK(JDK 8sr4以降)で機能します。別のクイックソリューション:(JDK 9/10のみ)
--add-modules java.se.ee
オプションを指定することにより、実行時に上記のすべてのJava EEモジュールを使用可能にできることに注意してください。java.se.ee
モジュールは、集約モジュールであるjava.se.ee
だけでなく、上記のJava EE APIモジュール。これはJava 11java.se.ee
で削除されたため、Java 11では機能しません。
適切な長期的ソリューション:(JDK 9以降)
上記のJava EE APIモジュールは、Java 11 での削除@Deprecated(forRemoval=true)
が予定されているため、すべてマークされています。したがって、この--add-module
アプローチは、そのままではJava 11で機能しなくなります。
Java 11以降で行う必要があるのは、クラスパスまたはモジュールパスにJava EE APIの独自のコピーを含めることです。たとえば、次のようにJAX-B APIをMaven依存関係として追加できます。
<!-- API, java.xml.bind module -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Runtime, com.sun.xml.bind module -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
</dependency>
JAXBの詳細については、JAXBリファレンス実装のページを参照してください。
Javaモジュール性の詳細については、JEP 261:Module Systemを参照してください。
GradleまたはAndroid Studio開発者向け:(JDK 9以降)
次の依存関係をbuild.gradle
ファイルに追加します。
dependencies {
// JAX-B dependencies for JDK 9+
implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
implementation "org.glassfish.jaxb:jaxb-runtime:2.3.2"
}
javax.xml.bind
および他のJavaEEクラスはあたり、Java(登録商標)11で除去するために予定されているJEP-320。
java.se.ee
モジュールが削除されたため、--add-modules
ソリューションは動作しなくなりました。代わりに、推奨されるソリューションを使用してください。JAXBを別の依存関係として追加します。
私の場合(春のブートファットjar)、pom.xmlに以下を追加するだけです。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
testCompile('javax.xml.bind:jaxb-api')
うまくいきました。
<scope>runtime</scope>
そのような場合に使用することをお勧めします
最近の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>
pom.xml
Maven構成のファイルです。それが何であるかわからない場合は、最初から始めることをお勧めします
<dependency> <groupId>javax.activation</groupId> <artifactId>javax.activation-api</artifactId> <version>1.2.0</version> </dependency>
最後の依存関係として使用しますが。
これは私のために働きました:
<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'
私のJava 8アプリの依存関係として、追加の引数なしでJRE 8またはJRE 9の両方で実行できる* .jarを生成します。
さらに、これはJAXB APIを使用する前にどこかで実行する必要があります。
System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");
これまでのところ、回避策としてうまく機能します。しかし、完璧な解決策のようには見えません...
org.eclipse.persistence:eclipselink
JAXB APIを取得するためだけに追加することは、すでにeclipselinkを使用しているのでない限り、非常に大きな依存関係です。
-XX:+IgnoreUnrecognizedVMOptions
コマンドラインオプションを使用することをお勧めします(詳細で私の回答を更新しました)
org.eclipse.persistence
、artifactId だけに依存することもできますorg.eclipse.persistence.moxy
。
ビルドに2つの依存関係を追加する必要があります
実装として、私はグラスフィッシュによるリファレンス実装を使用して、古いcom.sunクラス/ライブラリを取り除くことを選択しました。その結果、私は私の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を参照)
これは、jdk 9以降のバージョンを使用している場合、javaバージョンがこれをpomに追加するだけだからです。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
これを解決するために、プロジェクトにいくつかのJARファイルをインポートしました。
http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-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
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar
com.sun.xml.bind
アーティファクトは古く、下位互換性のためにのみ提供されていることに注意してください。org.glassfish.jaxb
他のいくつかの回答で述べたように、代わりに同等のアーティファクトを使用する必要があります。
コンパイル時および実行時に、スイッチを追加します --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にもあり
ます。
これでうまくいきました。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>
com.sun.xml.bind
アーティファクトは古く、下位互換性のためにのみ提供されていることに注意してください。org.glassfish.jaxb
他のいくつかの回答で述べたように、代わりに同等のアーティファクトを使用する必要があります。
Your 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'
--add-modules=java.xml.bind
JVMオプションを使用して、xmlバインドモジュールをJVMランタイム環境に追加できます。
例えば: java --add-modules=java.xml.bind XmlTestClass
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との間のJavaオブジェクトの直列化および非直列化に使用されるランタイム。
JAXB fat-jarバンドル:
com.sun.xml.bind:jaxb-impl:JAXBランタイムファット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リリース(4.7.3a)以降、Ctrl-Alt-P、またはプロジェクトMavenを右クリックして、プロファイルを選択します。
javax.xml.bind
>の依存関係jaxb-api
は実際には冗長であることを示してくれてありがとう。Glassfish依存関係はそれを引き出します。私はちょうどそれを試してみました、そしてそれは確かに機能します。
Java Web Start Executionの場合、Andy Guibertの提案を次のように使用できます。
<j2se version="1.6+"
java-vm-args="-XX:+IgnoreUnrecognizedVMOptions --add-modules=java.se.ee"/>
--add-modulesの余分な「=」に注意してください。このOpenJDKチケット、またはJava Platform、Standard Edition Oracle JDK 9 Migration Guideの「Understanding Runtime Access Warnings」の最後の注記を参照してください。
JavaEEはhttps://jakarta.ee/によって管理されるようになったため、2.3.2 以降の新しいMaven座標は次のとおりです。
https://eclipse-ee4j.github.io/jaxb-ri/#maven-artifacts
最初にリリースされたjaxb.versionは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>
私はこの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>
これにより、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>
2.0.5.RELEASE
Java 11でSpring Boot を使用して同じ問題が発生しました。
javax.xml.bind:jaxb-api:2.3.0
単独で追加しても問題は解決しませんでした。また、Spring Bootを最新のMilestoneに更新する必要があった2.1.0.M2
ので、次の公式リリースで修正されると思います。
JDK 9+を使用する場合は、JAX-B依存関係を追加する必要があります。Android Studioユーザーの場合、これをbuild.gradle
のdependencies {}
ブロックに追加する必要があります。
// Add missing dependencies for JDK 9+
if (JavaVersion.current().ordinal() >= JavaVersion.VERSION_1_9.ordinal()) {
// If you're using @AutoValue or any libs that requires javax.annotation (like Dagger)
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
// If you're using Kotlin
kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
kapt "javax.xml.bind:jaxb-api:2.3.1"
kapt "com.sun.xml.bind:jaxb-impl:2.3.2"
// If you're using Java
annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
testAnnotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
testAnnotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
}
また、Java 11と
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
javax.xml.bind:jaxb-apiまたはスプリングブートjakarta.xml.bind-apiを追加することでこのすべてのものを試しました.. jjwtバージョン0.10.0で修正のヒントを見つけましたが、最も重要なのは、jjwtパッケージが今分割!
したがって、この参照を確認してください:https : //github.com/jwtk/jjwt/issues/510
単に、あなたが使うなら
Java11とjjwt 0.9.xでClassNotFoundException:javax.xml.bind.DatatypeConverterの問題に直面した
をやる
jjwtバージョン0.11.x、ただし分割パッケージを使用:https : //github.com/jwtk/jjwt#install
パッケージを分割しているため、jjwt依存関係の上位バージョンは見つかりません。
乾杯。
答えではありませんが、補遺: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、クラスパス例外あり」)
ダウンロード 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
そしてそれはうまくいきます!
必要な依存関係は1つだけです。
dependencies {
implementation ("jakarta.xml.bind:jakarta.xml.bind-api:2.3.2")
はい、同じ種類の問題が発生していますが、Java 8を使用していて、このエラーが発生し続けたため、ほとんどの解決策を試しました。しかし、私がグローバルJavaバージョンを8に設定したとしても、私のmavenはまだJava 9を指していることがわかりました。
この種の問題が発生する可能性のある人は、MavenがデフォルトのJavaを使用するように修正する方法を確認してください。
古い回答「amazoncorrettoに切り替えることで問題が解決しました」ニュースの回答:corretto latestを使用しましたが、jdk 1.8と似ています。とにかく手動で依存関係を追加する必要があります
amazoncorretto:latest
現在、JDK 8与え、ない11.多くのドッカー画像はまだ、JDK 8に基づいているからこそ、JDK 8の間でAPIの除去に起因する互換性の問題の- > 11
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 -->
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>