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!