java - 为什么 javac "-source"标志不起作用?

标签 java javac

我正在测试 javac -source 标志,我对它应该如何工作感到有点困惑。

以这段代码为例。它是一个不兼容的 Java5 代码,因为方法 isEmpty() 在那个版本的 JDK 中没有为 String 定义。

public class TestJavac {
   public static void Main(String args[]) {
   String pippo = "pippo";   
   pippo.isEmpty();
   }
}

尝试编译使用:

javac -source 5 TestJavac.java

然后就可以了! 这对我来说听起来很奇怪,但也许有些事情我忽略了。 我的 JAVA_HOME 指向 1.6 JDK

最佳答案

源选项仅针对语言级别,不适用于 API(由 JDK 运行时库提供)。

有一个单独的选项 (-bootclasspath -extdirs) 来指定要使用的 JDK(并且您需要获取适当的 jar 文件)。

请注意,还有 -target(它控制输出字节码版本)。

你应该总是指定全部(或者甚至使用旧的 JDK 编译,无论如何你或多或少需要它来使第二个切换工作)

关于java - 为什么 javac "-source"标志不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794369/

相关文章:

java - 使用用户定义的方法删除数组中的重复项

java - 如何解决javac编译器错误 “package com.sun.tools.internal.ws.processor.model does not exist”?

java - 编译器在同一目录中找不到其他类

java - 如何更改 Java 构建中的 gradle 元数据位置

java - 弃用的编译错误

java - 如何编译多个相互依赖的java文件?

java - 如何检查类的注释是否属于特定类别?

java - 使用 Jackson 反序列化 Guava 的表抛出 "JsonMappingException: No suitable constructor found for type"

JavaFX 桌面 View 滚动条事件未触发

java - ant 文件的问题