使用Java 9 JDK定位Java 6会发出警告

时间:2017-12-14 13:43:07

标签: java gradle java-9 release-management java-10

我正在尝试使用JDK 9构建项目,因为使用javac的--release参数意味着它可以为旧版本构建而无需安装相应的JDK / JRE。我需要支持Java 6,因此我先前存在的设置需要Java 6用于bootstrapClasspath,而另一个JDK 8或9用于gradle和IDE。我想取消JDK 6而只使用9,并稍微整理一下。

我的新build.gradle具有以下配置:

tasks.withType(JavaCompile) {
    options.compilerArgs.addAll(['--release', '6', "-Xlint"])
}

sourceCompatibilitytargetCompatibilitybootstrapClasspath选项未设置,正如我明白--release参数现在处理此。

我收到以下警告:

warning: [options] source value 1.6 is obsolete and will be removed in a future release
warning: [options] target value 1.6 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.

我知道这些可以被抑制(它说就在那里),但我没想到会看到它们。 使用--release [7-9]构建时,这些警告不存在。

对于上下文,这是旧的(现在未使用)'2x JDK'配置:

sourceCompatibility = "1.6"
targetCompatibility = "1.6"

tasks.withType(JavaCompile) {
    options.bootstrapClasspath = new SimpleFileCollection(Arrays.asList(new File("$JDK6_HOME/jre/lib/rt.jar")))
}

我是否错误地设置了编译器参数?有没有办法不设置/取消设置sourcetarget

1 个答案:

答案 0 :(得分:5)

虽然这不是来自官方消息来源,但警告似乎与“一加三后”条款一致,如 的 JEP182#Policy for Retiring javac -source and -target Options

  

JDK 9将实施“一加三后”支持策略的含义   1.9 / 9,1.8 / 8,1.7 / 7和1.6 / 6将被认可   发布。该政策将在JDK 10中继续。

因此理想情况下,应该使用JDK10删除1.6中的警告,以便客户了解该策略的效果良好。

编辑: 然而,正如Alan in comments指出的那样 JDK 10将继续支持--release 6 this mailiing list.

中所述