hcp*_*hcp 4 java linux compiler-version java-6 java-8
我需要使用Java 6为大学编译我的源代码.我目前在我的PC(Linux)上安装了Java 8 JDK.如何在Java 6中编译?
ps我明白我将无法使用任何Java 7或8功能.
pps我意识到java 6源代码将使用Java 8 JDK编译好但是我发现在家里编译时我不小心在我的程序中使用了后Java 6功能.当我尝试在uni的实验室计算机上编译源代码时,我遇到了一堆错误.例如,无法将对象转换为基元.
解决该问题的方法是使用更高版本的SDK进行编译,并在编译时使用交叉编译选项.
交叉编译选项
默认情况下,类是根据javac附带的平台的引导程序和扩展类编译的.但javac还支持交叉编译,其中类是针对不同Java平台实现的引导程序和扩展类编译的.交叉编译时使用-bootclasspath和-extdirs选项很重要.
- 目标版本
生成以指定的虚拟机版本为目标的类文件.类文件将在指定的目标和更高版本上运行,但不会在早期版本的JVM上运行.有效目标是1.1,1.2,1.3,1.4,1.5(也是5),1.6(也是6),1.7(也是7)和1.8(也是8).
-target选项的缺省值取决于-source选项的值:
- 如果未指定-source选项,则-target选项的值为1.8
- 如果-source选项为1.2,则-target选项的值为1.4
- 如果-source选项为1.3,则-target选项的值为1.4
- 如果-source选项为1.5,则-target选项的值为1.8
- 如果-source选项为1.6,则-target的值为选项1.8
- 如果-source选项为1.7,则-target的值为选项1.8
- 对于-source选项的所有其他值,-target选项的值是-source选项的值.
-bootclasspath bootclasspath
针对指定的一组引导类进行交叉编译.与用户类路径一样,引导类路径条目由冒号(:)分隔,可以是目录,JAR归档或ZIP归档.
要完全正确地使用选项(即同时使用-bootclasspath
选项),需要使用rt.jar
目标版本的JRE(而不是JDK).
您可以使用以下内容进行编译
% javac -target 1.6 <whatever you want to compile>
Run Code Online (Sandbox Code Playgroud)