我正在尝试从一个项目的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
)但找不到任何内容的位置。
我在做什么错了?
答案 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的所有版本都具有相同的编号