3

我正在尝试 JDK9 (9-ea+143),需要设置--add-modules java.xml.bind. 我努力了:

  • 环境GRADLE_OPTS="--add-modules java.xml.bind '-Dorg.gradle.jvmargs=--add-modules java.xml.bind'"
  • org.gradle.jvmargs=--add-modules java.xml.bind在 gradle.properties 中设置。
  • 添加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' }到 build.gradle

测试仍然失败。我错过了什么?

我在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
4

1 回答 1

4

它在将以下内容添加到 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"]
}
于 2016-11-10T17:46:50.667 回答