微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在尝试使用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"])
}

sourceCompatibility,targetCompatibility和bootstrapClasspath选项没有设置,因为我理解–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")))
}

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

解决方法

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

JDK 9 will implement a “one plus three back” support policy meaning
that 1.9/9,1.8/8,1.7/7,and 1.6/6 will be recognized in that
release. That policy will continue in JDK 10.

因此理想情况下,应该使用JDK10删除1.6,警告对于客户了解策略有良好的效果.

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

原文地址:https://www.jb51.cc/java/128434.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐