gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:41 26 4
gpt4 key购买 nike

我正在尝试使用 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

最佳答案

虽然这不是来自官方消息,但警告似乎与 “一加三回” 条款一致 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.

因此理想情况下,1.6 应该与图中的 JDK10 一起删除,并带有警告,让客户了解该政策。

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

关于java - 使用 Java 9 JDK 定位 Java 6 会发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47814806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com