用Java 8 JDK编译java 6安装

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的实验室计算机上编译源代码时,我遇到了一堆错误.例如,无法将对象转换为基元.

And*_*son 5

解决该问题的方法是使用更高版本的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).


Kal*_*ali 3

您可以使用以下内容进行编译

% javac -target 1.6 <whatever you want to compile>
Run Code Online (Sandbox Code Playgroud)