5
votes

Problème de Java 11 avec les dépendances jaxb

Je tente une mise à niveau de la version Java 8 vers 11 pour un projet et j'ai rencontré l'erreur suivante pendant la construction après avoir ajouté manuellement les dépendances JAXB:

implementation "javax.xml.bind:jaxb-api:2.2.11"
implementation "com.sun.xml.bind:jaxb-core:2.2.11"
implementation "com.sun.xml.bind:jaxb-impl:2.2.11"
implementation "javax.activation:activation:1.1.1"

J'utilise Gradle, j'ai donc ajouté les dépendances suivantes:

'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} in com.sun.xml.bind:jaxb-impl:2.2.11

J'ai essayé de parcourir le pom jaxb pour rechercher l'endroit dans lequel la propriété recherchée ( tools.jar ) est spécifiée mais je n'ai rien trouvé.

Qu'est-ce que je fais mal?


0 commentaires

4 Réponses :


5
votes

Utilisez simplement la version jaxb-... artefacts jaxb-... Si nous vérifions jaxb-parent-2.3.0.pom alors nous voyons qu'il n'utilise plus <systemPath>${tools.jar}</systemPath>


0 commentaires

1
votes

Vous pouvez utiliser les ./gradlew dependencies pour trouver la dépendance parente de cette dépendance jaxb qui a provoqué l'erreur.

Ensuite, mettez à niveau cette dépendance vers la dernière.

Par exemple pour corriger l'erreur:

testImplementation 'io.rest-assured:xml-path:4.2.0'
$ ./gradlew dependencies
|    \--- io.rest-assured:xml-path:3.0.2 -> 3.3.0
|         +--- org.codehaus.groovy:groovy-xml:2.4.15 -> 2.5.9 (*)
|         +--- org.codehaus.groovy:groovy:2.4.15 -> 2.5.9
|         +--- io.rest-assured:rest-assured-common:3.3.0 (*)
|         +--- org.apache.commons:commons-lang3:3.4
|         +--- org.ccil.cowan.tagsoup:tagsoup:1.2.1
|         +--- javax.xml.bind:jaxb-api:2.2.12 -> 2.3.1
|         |    \--- javax.activation:javax.activation-api:1.2.0
|         +--- com.sun.xml.bind:jaxb-osgi:2.2.10

Ici, dans mon cas, jaxb-osgi est introduit par io.rest-assured:xml-path . Donc, la mise à niveau de cette dépendance devrait le résoudre.

Errors occurred while build effective model from /home/gayanw/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-osgi/2.2.10/c926a537af564ec047ec6308df1d0d2a03364a86/jaxb-osgi-2.2.10.pom:
    'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} in com.sun.xml.bind:jaxb-osgi:2.2.10


1 commentaires

J'utilise io.rest-assured:xml-path:3.3.0 als part of spring-boot-starter-web -> 2.3.3.RELEASE et je reçois toujours cette erreur



0
votes

J'ai trouvé que l'ajout

ext['rest-assured.version'] = '4.3.1'

à votre fichier build.gradle remplacera la version fournie avec votre version de spring-cloud, et toutes les versions de io.rest-assured:** fichiers téléchargés auront le même numéro


0 commentaires

0
votes

J'ai le même problème maintenant, je viens de mettre à jour tout ce qui est dans mon grade

implementation 'io.rest-assured:rest-assured:4.3.2'
implementation 'io.rest-assured:json-path:4.3.2'
compile group: 'com.sun.xml.bind', name: 'jaxb-osgi', version: '2.3.2'

l'erreur disparaît EDIT: pour mon projet, si j'utilisais une version plus mise à jour de jaxb-osgi, cela ne fonctionnerait pas (l'erreur disparaît mais le test s'arrête pour s'exécuter)


0 commentaires