ホームページ >Java >&#&チュートリアル >JAXB 使用時の Java 11 での「javax.xml.bind が存在しません」エラーを解決する方法

JAXB 使用時の Java 11 での「javax.xml.bind が存在しません」エラーを解決する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 00:47:02477ブラウズ

How to Resolve the

javax.xml.bind パッケージは Java 11 に存在しません

JAXB を使用して XML データを解析し、認証する場合:

<code class="java">JAXBContext context = JAXBContext.newInstance("com.acme.foo");
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setSchema(schema);
FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));</code>

Java 8 に基づくこのコードは正常に動作しますが、Java 11 では次のコンパイル エラーが発生します:

package javax.xml.bind does not exist

回避策

リリースノートによると、Java 11 では、この問題の原因となっていた javax.xml.bind (JAXB) などの Java EE モジュールが削除されました。

この問題を解決するには、Java EE テクノロジーの代替バージョンを使用する必要があります。必要なクラスを含む Maven 依存関係を追加するだけです:

<code class="xml"><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></code>

Jakarta EE 8 Update ( 2020 2020 年 3 月)

Jakarta EE 8 で古い JAXB モジュールを Jakarta XML Binding に置き換えることができるようになりました:

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>2.3.3</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.3</version>
  <scope>runtime</scope>
</dependency></code>

Jakarta EE 9 Update (2020 年 11 月)月)

最新バージョンの Jakarta XML Binding 3.0 を使用します:

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>3.0.0</version>
  <scope>runtime</scope>
</dependency></code>

注: Jakarta EE 9 では、新しい API パッケージ名前空間 jakarta が採用されています。 xml.bind.* の場合は、インポート ステートメントを更新してください:

<code class="java">javax.xml.bind -> jakarta.xml.bind</code>

Jakarta EE 10 Update (2022 年 6 月)

Jakarta XML Binding 4.0 の最新バージョンを使用してください。 (Java SE 11 以降が必要):

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>4.0.0</version>
  <scope>runtime</scope>
</dependency></code>

以上がJAXB 使用時の Java 11 での「javax.xml.bind が存在しません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。