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 サイトの他の関連記事を参照してください。