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?
4 Réponses :
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>
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
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
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
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)