Gradle在JDK9中不支持--add-modules jvm参数。

4
我正在尝试使用JDK9(9-ea + 143),需要设置--add-modules java.xml.bind。我已经尝试过以下方法:
  • 在gradle.properties中设置org.gradle.jvmargs=--add-modules java.xml.bind
  • 在build.gradle中添加test { jvmArgs '--add-modules java.xml.bind' }
  • 在build.gradle中添加tasks.withType(Test) { jvmArgs '--add-modules java.xml.bind' }
  • 在build.gradle中添加tasks.withType(JavaExec) { jvmArgs '--add-modules java.xml.bind' }
但是测试仍然失败。我错过了什么吗?
我在https://github.com/henrik242/gradle-jdk9-test-problem上提供了一个示例项目。
✨  ./gradlew build
:compileJava
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:1: error: package javax.xml.bind does not exist
import javax.xml.bind.ValidationException;
                     ^
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:5: error: cannot find symbol
  public void doStuff() throws ValidationException {
                               ^
  symbol:   class ValidationException
  location: class SomeClass
/foo/gradle-jdk9-test-problem/src/main/java/SomeClass.java:6: error: cannot find symbol
    throw new ValidationException("msg");
              ^
  symbol:   class ValidationException
  location: class SomeClass
3 errors
:compileJava FAILED
1个回答

6

在build.gradle中添加以下内容即可使其工作:

compileJava {
  options.compilerArgs += ["--add-modules", "java.xml.bind"]
}

compileTestJava {
  options.compilerArgs += ["--add-modules", "java.xml.bind"]
}

test {
  jvmArgs += ["--add-modules", "java.xml.bind"]
}

有没有更简单的方法?
编辑:这也可以:
tasks.withType(AbstractCompile) {
  options.compilerArgs += ["--add-modules", "java.xml.bind"]
}

tasks.withType(Test) {
  jvmArgs += ["--add-modules", "java.xml.bind"]
}

1
这个解决方案让我在一天的挣扎后终于解决了问题。我希望有一种方法可以为您的解决方案提供超过10分的点赞。 - Hamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接