我正在测试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.
source选项仅适用于语言级别,不适用于API(由JDK运行时库提供).
有一个单独的选项(-bootclasspath -extdirs)来指定要使用的JDK(并且需要获取相应的jar文件).
请注意,还有-target(控制输出字节码版本).
你应该总是指定所有(或者甚至使用较旧的JDK进行编译,你或多或少需要为第二个交换机工作)