Java 11问题与jaxb依赖关系

时间:2019-05-16 15:42:45

标签: java gradle

我正在尝试从一个项目的Java 8版本升级到11,并且在手动添加JAXB依赖项之后,在构建期间遇到了以下错误:

'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

我正在使用Gradle,所以我添加了以下依赖项:

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"

我尝试搜索jaxb pom来搜索指定其要查找的属性(tools.jar)但找不到任何内容的位置。

我在做什么错了?

4 个答案:

答案 0 :(得分:1)

只需使用Json.encode(trustBalancingOutputDataListResult)工件的2.3以上版本。如果我们检查jaxb-...,就会发现它不再使用jaxb-parent-2.3.0.pom

答案 1 :(得分:1)

您可以使用someFlow查找导致错误的jaxb依赖项的父依赖项。

然后将该依赖关系升级到最新版本。

例如要解决此错误:

./gradlew dependencies
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

在我的情况下,$ ./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 jaxb-osgi引入。因此,升级该依赖性应该可以解决它。

io.rest-assured:xml-path

答案 2 :(得分:1)

现在有同样的问题,我只是升级了所有东西

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'

错误消失 编辑:对于我的项目,如果我使用了jaxb-osgi的更多更新版本,它将无法正常工作(错误消失,但测试停止运行)

答案 3 :(得分:0)

我发现添加了

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

您的build.gradle文件将覆盖您的spring-cloud版本附带的版本,并且下载的io.rest-assured:**个jar的所有版本都具有相同的编号