Notez que les propriétés système, y compris JAXBContext, ne peuvent pas être utilisées dans Java11

Cela a pris du temps et c'était assez difficile, alors j'ai rédigé une note.

Pendant le développement, il a été question de mettre à jour la version Java d'un projet qui fonctionnait jusqu'à présent vers la version 11.

En conclusion, je suis resté coincé avec une erreur sans fin contenant un message comme celui ci-dessous.

JAXBContext cannot be resolved The import javax.xml.bind cannot be resolved

Il y a eu d'autres erreurs, mais le fait est que les bibliothèques précédemment utilisées telles que javax.xml.bind sont soudainement devenues inutilisables.

environnement

Java11(jdk-11.0.1) Spring Tool Suite 3.9.6.RELEASE

Solution

Ajoutez ce qui suit à pom.xml

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>javax.activation-api</artifactId>
    <version>1.2.0</version>
</dependency>

Vous devez préparer une bibliothèque qui serait manquante.

Notes de version pour Oracle JDK 11

Les notes de mise à jour du JDK 11 d'Oracle contenaient un élément appelé Fonctionnalités et options supprimées. Il semble que certaines propriétés système ne seront pas disponibles à partir de Java 11.

↓ Copiez la zone qui vous était liée. (La bibliothèque où le déficit était en colère)

In addition, the following system properties are no longer applicable due to the the removal of the Java EE and CORBA modules:

com.sun.xml.internal.ws.client.ContentNegotiation com.sun.xml.internal.ws.legacyWebMethod javax.xml.bind.context.factory javax.xml.bind.JAXBContext javax.xml.soap.MetaFactory javax.xml.ws.spi.Provider jaxb.fragment jaxb.noNamespaceSchemaLocation jaxb.schemaLocation jaxb.formatted.output jaxb.encoding

Toute l'histoire est écrite dans la note de publication.

■ Note de publication https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html

■ Fonctionnalités et options supprimées https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#Removed

Il y a beaucoup d'autres choses comme mail.mime manquant.

Le projet qui utilisait la bibliothèque supprimée jusqu'à présent était que si vous mettez à jour vers Java 11 sans préparation, une erreur se produira naturellement.

référence

Une page que j'ai trouvée en cherchant à résoudre l'erreur ci-dessus (je ne connaissais pas la cause à ce moment-là)

https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-in-j

https://github.com/authzforce/restful-pdp/issues/4

Recommended Posts

Notez que les propriétés système, y compris JAXBContext, ne peuvent pas être utilisées dans Java11
Veuillez noter que Spring Boot + Tomcat 8.5.8 ne peut pas être utilisé!
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise
Code Java qui ne peut pas être utilisé depuis Kotlin (pour les sessions d'étude en interne)
Pourquoi la comparaison de classe de type chaîne Java (==) ne peut pas être utilisée
Extrait technologique pouvant être utilisé pour créer des sites EC dans la formation Java
Vérifiez avec Java / Kotlin que les fichiers ne peuvent pas être écrits en UAC sous Windows
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
Touches de raccourci pratiques pour Eclipse
Syntaxe et conditions d'occurrence d'exception pouvant être utilisées lors de la comparaison avec null en Java
[Java 8] Méthode de tri par ordre alphabétique et par ordre de longueur de chaîne de caractères pouvant être utilisée dans les tests de codage
[Java] Il semble que `0 <hoge <10` ne puisse pas être écrit dans l'expression conditionnelle de l'instruction ʻif`.
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
Java (édition super débutante) compréhensible en 180 secondes
Nouvelles fonctionnalités de Java 14 pouvant être utilisées pour écrire du code
[rails] Problèmes qui ne peuvent pas être enregistrés / connectés avec l'appareil
Parce que getSupportLoaderManager ne peut pas être utilisé
Problème de ne pas trouver javax.annotation.Généré en Java 11
Java Stream ne peut pas être réutilisé.
Mémo de référence / serveur LDAP en mémoire pouvant être intégré à Java
Outil d'analyse statique pouvant être utilisé avec GitHub [version Java]
Les fichiers texte placés dans des ressources en Java ne peuvent pas être lus lorsqu'ils sont mis en jarr
SwiftUI View qui peut être utilisé en combinaison avec d'autres frameworks
Il semble que Java 14 ajoutera des fonctions de type classe de données
[Swift] Notez que TableView ne peut pas supprimer uniquement des cellules spécifiques
[Java 8] Jusqu'à la conversion de l'entrée standard qui peut être utilisée dans les tests de codage en une liste ou un tableau
CentOS7 VirtualBOX yum ne peut pas être utilisé
Notation de version Java qui change dans Java 10
Lire le fichier de propriétés Java en C #
Impossible d'installer Java sur Ubuntu 13.04
Traitement d'entrée / sortie de fichier Java pouvant être utilisé via l'historique
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
[Android Studio] Description qui peut être saisie en continu dans la base de données SQLite [Java]
[Java] Les variables déclarées à l'intérieur de l'instruction `for` ne peuvent pas être utilisées en dehors du bloc` instruction for`