为什么 Eclipse 抱怨该项目指定编译器合规性 1.8,但使用了 JRE 11?

use*_*967 1 java eclipse compiler-version

我将 Eclipse 项目编译器合规性设置为 1.8,因为我想生成可以在安装了 JRE 8 的计算机中执行的 jar 文件。

但是,在我的开发计算机中,我只安装了 JRE 11。我认为这没问题,因为我希望 JRE 11 能够执行 1.8 及更高版本的文件。

但是,Eclipse 会生成有关此问题的警告(我找不到禁用方法),并且编译器首选项对话框显示“当选择 1.8 合规性时,请确保安装并激活了兼容的 JRE(当前为 11)”,这使得听起来 JRE 11 与 1.8 不兼容。真的是这样吗?

我在这里到底做了什么错误的假设?

另外,我真的需要安装 JRE 8 才能生成 JRE 8 兼容代码吗?

how*_*ger 5

“项目”>“属性:Java 编译器”中,选中“使用‘--release’选项”复选框以避免出现警告。

例如,使用“--release”选项并将编译器合规性级别设置为1.8 时,即使" foo ".strip()使用 Java 11 JDK,也会显示为错误,因为String#strip()Java 11 中引入的选项在 Java 8 中缺失。

在此输入图像描述

也可以看看: