Eclipse Java - 将编译器设置为 Java 6 但仍然有 Java 7 methods/libraries 并且没有抱怨

Eclipse Java - Set compiler to Java 6 but still have Java 7 methods/libraries and no complains

对于一个项目,我必须使用 Java 6,因此我将我的 eclipse 编译器设置设置为 1.6(JDK 合规级别)。

但是,我包含了 java.nio.file.Files 这是一个 Java 7 库,我没有收到任何投诉。我可以确保我的项目特定设置设置为 1.6。我什至将我的整个工作区更改为 1.6 并重建,仍然没有抱怨。我的同事正在 java.nio.files.

上看到投诉

是否因为我有一个 jdk7 即使设置为 1.6 spcs 也能识别 java.nio.file.Files

JDK 合规级别 是 Java 语法的级别,而不是运行时库。它只会阻止您使用在更高版本中引入的语言功能,例如在 JDK 7.

中引入的 try-with-resources

如果你想为JDK6开发,你需要使用JDK6.

这是两个不同的东西:

  • compliance 级别是关于 syntax 的,你可以在编写 Java 代码时使用(分别关于 Java 放入编译字节码的版本号)
  • 但是您可以使用的取决于您的项目正在使用的JDK

换句话说:如果您真的想将项目限制为 Java 6 个库,则必须在系统上安装 Java 6 JDK,并指向在您的项目设置中(很可能,您当前的项目设置使用 newer-than-Java-6 JDK )。

和通常的免责声明:Java 6 已经在很多年前结束了。您应该尽一切努力升级您的设置。

Java 6 能够解释 java.nio.file.Files 因为没有特殊的 Java 7 语法对比 Java 7 和 Java 8 (lambda表达式等)。所以你正在研究标准库。卸载 Java 7 JDK 并安装 Java 6 JDK 然后你会发现 java.nio.file.Files 不再可用。