Java 11 paquet javax.XML.lier n'existe pas [dupliquer]
Cette question a déjà une réponse ici:
- Comment résoudre java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException en Java 9 15 réponses
- Remplacements de modules JPMS obsolètes avec API Java EE 4 réponses
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?
0
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