J'essaie de désérialiser les données XML dans une arborescence de contenu Java à l'aide de JAXB , en validant les données XML telles qu'elles ne sont pas masqué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 je construis le projet avec Java 8 ça va, 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?
D'après release-notes , Java 11 a supprimé les modules Java EE:
Java.xml.bind (JAXB) - REMOVED
Voir JEP 32 pour plus d’informations.
Vous pouvez résoudre le problème en utilisant d'autres versions des technologies Java EE. Ajoutez simplement des dépendances Maven contenant 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>