Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-06 00:47:02
original
537 Les gens l'ont consulté

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>
Copier après la connexion

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
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal