Remplacements pour obsolète JPMS modules avec Java EE Api
Java 9 obsolète six modules qui contiennent des Api Java EE et ils sont va être retiré bientôt:
- java.activation avec
javax.activation
paquet - java.corba avec
javax.activity
,javax.rmi
,javax.rmi.CORBA
, etorg.omg.*
paquets - java.transaction avec
javax.transaction
paquet - java.xml.lier avec tous les
javax.xml.bind.*
paquets - java.xml.ws avec
javax.jws
,javax.jws.soap
,javax.xml.soap
, et tous lesjavax.xml.ws.*
paquets - java.xml.ws.annotation avec
javax.annotation
paquet
Qui a maintenu tiers des artefacts de fournir les Api? Il n'a pas d'importance comment ils fournir les Api ou d'autres fonctions qu'ils ont à offrir, tout ce qui compte est, sont-ils une baisse-dans le remplacement de ces modules/packages?
Pour le rendre plus facile de recueillir des informations, j'ai répondu avec ce que je sais jusqu'à présent et a fait la réponse d'un wiki de la communauté. J'espère que les gens vont l'étendre au lieu d'écrire leurs propres réponses.
Avant de voter à proximité:
- Oui, il y a déjà quelques questions sur les différents modules et une réponse à cette question serait, bien entendu, de duplication de l'information. Mais autant que je sache, il n'y a pas un seul point d'apprendre à propos de tous ces, qui, je pense, a beaucoup de valeur.
- Questions demandant bibliothèque recommandations sont généralement considérés comme étant hors-sujet, car "ils ont tendance à attirer les opinions des réponses et des spam", mais je ne pense pas que cela s'applique ici. La validité des bibliothèques est clairement définie: Ils ont à mettre en œuvre une norme spécifique. Au-delà de que rien d'autre ne compte, donc je ne vois pas beaucoup de risque pour avis et le spam.
- Vous pouvez surtout trouver tous ces déplacés dans github.com/javaee et des liens vers quelques détails à JEP 320: Supprimer la Java EE et CORBA Modules
- JEP 320 a été en effet très instructif et j'ai fini ma réponse. Je vous remercie. (Maintenant, je souhaite que je n'avais pas fait un wiki. 😉)
- Voir aussi ce 2018-05-14 article dans InfoWorld, Java feuille de route: l'Éclipse de Jakarta EE Java enterprise prend forme par Paul Krill. Sous-titre: La Fondation Eclipse présente les 39 projets qui composent le nouveau nuage-native, microservices d'entreprise favorable Java effort, et comment GlassFish va évoluer
- De JDK 11 il a été supprimé. Si vous utilisez le jdk 9 ou au-dessus, il est préférable d'ajouter la dépendance directement plutôt que d'utiliser le "--add-modules java.xml.bind", ce genre de choses
Vous devez vous connecter pour publier un commentaire.
Au lieu d'utiliser le obsolète Java EE des modules, utiliser les objets suivants.
JAF (java.activation)
JavaBeans Activation Cadre autonome de la technologie (disponible sur Maven Central):
(Source)
CORBA (java.corba)
De JEP 320:
JTA (java.transaction)
Version autonome:
(Source; prendre un coup d'oeil pour savoir comment utiliser
1.2
et la prochaine1.3
sur la classe et le chemin d'accès du module.)JAXB (java.xml.lier)
Depuis Java EE a été rebaptisée à Jakarta EE, JAXB est désormais fournie par les nouveaux artefacts:
Les artefacts vieux de
jaxb-core
etjaxb-impl
ne sont pas recommandés pour les utiliser parce qu'ils contiennent des paquets éclatés.JAXB l'Implémentation de Référence de page.
schemagen
etxjc
peut être télécharger il y a de trop dans le cadre d'un autonome JAXB de distribution.Voir aussi lié répondre.
JAX-WS (java.xml.ws)
De référence de mise en œuvre:
Autonome de distribution de téléchargement (contient
wsgen
etwsimport
).Commun des Annotations (java.xml.ws.annotation)
Java Communes Annotations (disponible sur Maven Central):
(Source)
jax-ws
de deux jdk etcom.sun.xml.ws
dépendance?com.sun.xml.ws:jaxws-ri
au lieu dejava.xml.ws
dans mon module, parce que ce dernier est obsolète et sera supprimé. Et j'ai ajouté de la dépendance à mon pom fichier et le message d'erreur "module xyz lit package javax.xml.ws de java.xml.ws " et " java.xml.ws'" est apparu.--add-modules
ou parce que certains autres modules exige. Pouvez-vous ouvrir une nouvelle question, afin que nous puissions prendre un coup d'oeil?--patch-module
peut réparer la fissure.jaxb-runtime
au lieu de deux modulesjaxb-core
etjaxb-impl
.JAXB (java.xml.bind) pour JDK9
Fonctionne parfaitement dans mes applications de bureau sur jdk9/10 EA
2.3.0
pour les deuxjaxb-api
etjaxb-runtime
n'est pas une bonne idée. Le Glassfish runtime est actuellement à2.3.0.1
alors que l'API reste à2.3.0
. Je suggérer la suppression de laproperties
élément entièrement dans la Réponse, et juste difficile de code de chaque numéro de version dans chaquedependency
séparément.<dependencyManagement>
, l'importation de l'org.glassfish.jaxb:jaxb-bom
NOMENCLATURE à une certaine version (la dernière est maintenant 2.3.0.1), puis dans le réel<dependencies>
section, ne spécifiez pas une version pourjaxb-api
oujaxb-runtime
. Le numéro de version sera saisi à partir de la NOMENCLATURE, ce qui permettra de s'assurer qu'ils sont toujours en synchronisation et de mise à niveau ensemble.Il semble que jaxws-ri dépend de manière transitive de commonj.sdo:commonj.sdo:jar:2.1.1.v201112051852 qui peut apparemment être trouvés à partir de référentiel http://download.eclipse.org/rt/eclipselink/maven.repo
mvn -U clean install
arrête pas de direCould not find artifact commonj.sdo:commonj.sdo:jar:2.1.1.v201112051852
.<dependency> <groupId>javax.jws</groupId> <artifactId>jsr181-api</artifactId> <version>1.0-MR1</version> </dependency>
sdo-eclipselink-plugin
J'avais besoin de remplacer JAX-WS (java.xml.ws) et JAXB (java.xml.bind) pour mon Ressort de Démarrage 2 en fonction de l'application et a terminé avec ces Pots (build Gradle):
(Vous pouvez avoir besoin
compile
ou autre portée,runtimeOnly
était assez pour nous.)J'ai remarqué que https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core est décrit comme "Vieux" et à l'aide de cette réponse est allé pour
org.glassfish
basée sur des trucs qui amenaorg.eclipse.yasson
ainsi.Maintenant, il est vraiment situation délicate, il fonctionne, mais comment doit-on être sûr que c'est le meilleur remplacement, droit?
Juste une variation mineure (amélioration) sur les réponses ci-dessus --- exemplifié pour JAXB seulement. On peut ajouter les dépendances avec le
runtime
portée et seulement si cela est effectivement nécessaire (c'est à dire lors de la construction pour l'exécution dans un JRE avec la version >= 9 --- ici v11 est illustré):J'ai expérimenté avec la plupart des suggestions décrites ci-dessus à l'aide du JDK version 11.0.3 et n'ont pas été couronnés de succès. La seule solution que j'ai finalement trouvé du travail est le suivant. Peut-être il ya d'autres options qui travaillent aussi, mais il semble que le choix de la version est critique. Par exemple, la modification de com.soleil.xml.ws:rt pour 2.3.2 causes module javax.jws pas longtemps disponible.
J'ai trouvé le plus simple à obtenir autour de la JAXB parties de ces questions était d'utiliser la gestion des dépendances dans ma racine pom ou dans mon bom:
Et dans les modules qui fail compilation sur jdk11:
Aussi, la mise à jour de la version de
org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
à 0.14.0 résolu tous les jaxb génération de problèmes pour moi.