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

Chr*_*sti 3 java javac

我正在测试javac -source旗帜,我对它应该如何工作有点困惑.

请参阅此代码作为示例.它是一个不兼容的Java5代码,因为isEmpty()在该版本的JDK中没有为String定义该方法.

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

尝试编译使用:

javac -source 5 TestJavac.java
Run Code Online (Sandbox Code Playgroud)

然后它的作品!这对我来说听起来很奇怪,但也许有些东西我无视.我的JAVA_HOME意思是1.6 JDK.

Thi*_*ilo 5

source选项仅适用于语言级别,不适用于API(由JDK运行时库提供).

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

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

你应该总是指定所有(或者甚至使用较旧的JDK进行编译,你或多或少需要为第二个交换机工作)