Maison  >  Article  >  Java  >  Comment résoudre l'erreur « javax.xml.bind n'existe pas » dans Java 11 lors de l'utilisation de JAXB ?

Comment résoudre l'erreur « javax.xml.bind n'existe pas » dans Java 11 lors de l'utilisation de JAXB ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 00:47:02360parcourir

How to Resolve the

Le package javax.xml.bind n'existe pas dans Java 11

Lors de l'analyse et de l'authentification des données XML à l'aide de JAXB :

<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>

Basé sur Java 8, ce code fonctionne correctement, mais dans Java 11, l'erreur de compilation suivante se produit :

package javax.xml.bind does not exist

Solution de contournement

Selon Dans les notes de version, Java 11 a supprimé les modules Java EE, notamment javax.xml.bind (JAXB), à l'origine de ce problème.

Pour résoudre ce problème, vous devez utiliser une version alternative de la technologie Java EE, ajoutez simplement une dépendance Maven contenant les classes requises :

<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 mars 2020)

Vous pouvez désormais remplacer l'ancien module JAXB par Jakarta XML Binding dans Jakarta EE 8 :

<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>

Mise à jour de Jakarta EE 9 (novembre 2020) Mois)

Utilisez la dernière version de 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>

Remarque : Avec Jakarta EE 9 adoptant le nouvel espace de noms du package API jakarta . xml.bind.*, veuillez mettre à jour la déclaration d'importation :

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

Mise à jour de Jakarta EE 10 (juin 2022)

Utilisez la dernière version de Jakarta XML Binding 4.0 (nécessite Java SE 11 ou supérieur) :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn