5 votes

Comment ajouter les dépendances maven de json aux modules dans >= Java 9

Dans les projets java 8 il suffit d'ajouter les dépendances suivantes dans maven

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

Utilisation d'OpenJDK, Eclipse 2018-12
et le module maven, il en résulte l'obtention d'une erreur dans le module-info.java :

Le paquet javax.json.stream est accessible depuis plus d'un module : java.json, org.glassfish.java.json

Ainsi, dans les deux projets de dépendance, il existe un paquet appelé javax.json.stream et, en raison du système de modules de Jigsaw, il n'est plus autorisé ?

Comment résoudre ce problème ?

EDITAR:
J'ai mis à jour la dépendance de maven à 1.1.4 et je les ai mis dans le classpath. Le site javax.json-api a un fichier module-info.java et fonctionne bien, eclipse ne montre plus d'erreurs.
Mais maintenant, les paquets de la mise en œuvre javax.json (org.glassfish) ne sont pas trouvés, ce qui entraîne un ClassNotFoundException: org.glassfish.json.JsonProviderImpl

Que puis-je faire de plus ?

EDITAR:
Cela fonctionne maintenant, j'ai oublié de générer un module-info.java dans ce projet.

2voto

nullpointer Points 1135

Ainsi, dans les deux projets de dépendance, il y a un paquet appelé javax.json.stream et à cause du système de modules de Jigsaw, ceci n'est pas autorisé. n'est plus autorisé ?

Ceci est toujours autorisé, mais avec ces deux dépendances qui sont résolues sur le Chemin de classe au lieu de chemin des modules c'est-à-dire dans le module sans nom .

Une autre solution pour résoudre ce problème pendant que vous créez votre bibliothèque en tant que modulaire est de s'assurer de corriger les bibliothèques en aval qui exportent le même paquet, ce qui nécessiterait une migration ascendante et vous devrez peut-être attendre qu'elles corrigent le problème dans leur dernière mise à jour (ou vérifier si une mise à jour est déjà disponible), puis vous fier à elles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X