新的javac警告,用于设置没有bootclasspath的旧源
2010年12月21日达西 - 甲骨文
要从javac
JDK N用于交叉编译器到较旧的平台版本,正确的做法是:
- 使用较旧的
-source
设置。 - 设置
bootclasspath
为针对rt.jar
较旧平台的(或等效的)编译。
如果不采取第二步,javac
将尽职使用旧语言规则与新库结合,这可能导致类文件不能在旧平台上工作,因为可以包括对不存在的方法的引用。
感谢Jon Gibbons的工作,在JDK 7 build 121和以后javac
检测和警告这种可疑情况; 例如:
$ javac -source 6 HelloWorld.java 警告:[options] bootstrap类路径未与-source 1.6一起设置
解决警告的一种方法是设置bootclasspath
。如果这是不适当的,警告可以禁用在-Xlint
家庭内的新子选项-Xlint:-options
。
有了这种变化,可能javac
会导致微妙构建错误的可能有问题的选项组合被编译器诊断,并且可以通过直接寻址或通过新的-Xlint
子选项被记录为构建过程的一部分。