Java 11 paquet javax.XML.lier n'existe pas [dupliquer]


Cette question a déjà une réponse ici:

Je suis essayer de désérialiser les données XML dans une arborescence de contenu Java en utilisant JAXB, en validant les données XML telles qu'elles ne sont pas affichées:

try {
  JAXBContext context = JAXBContext.newInstance("com.acme.foo");
  Unmarshaller unmarshaller = context.createUnmarshaller();
  unmarshaller.setSchema(schema);
  FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));
} catch (UnmarshalException ex) {
  ex.printStackTrace();
} catch (JAXBException ex) {
  ex.printStackTrace();
}

Quand j'construire le projet avec Java 8, c'est bien, mais le construire avec Java 11 échoue avec une erreur de compilation:

package javax.xml.bind does not exist

Comment résoudre le problème?

Author: Boris, 2018-09-25

1 answers

Selon lesrelease-notes , Java 11 a supprimé les modules Java EE:

java.xml.bind (JAXB) - REMOVED
  • Java 8-OK
  • Java 9-OBSOLÈTE
  • Java 10-OBSOLÈTE
  • Java 11 - SUPPRIMÉ

Voir JEP 320 pour plus d'informations.

Vous pouvez résoudre le problème en utilisant d'autres versions des technologies Java EE. Ajoutez simplement les dépendances Maven qui contiennent les classes dont vous avez besoin:

<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>
 3
Author: Boris, 2018-09-25 15:50:21