是否可以使用JDK 1.6构建java代码以在JRE 1.5上运行?

ami*_*mit 6 java java-5 java-6

在使用JDK 1.6编译时,是否可以选择构建在JRE 1.5上运行的Java代码?

PS:我是Java新手.

Vin*_*nie 10

如果用1.6编译代码,那么它将不会在1.5上运行.如果你希望它在1.5中运行,那么你可以用1.5编译代码,它可以在两者上运行.

尝试使用1.5编译,如果有错误,则发布它们.如果您在代码中使用特定的1.6增强功能,则无法在1.5上编译的唯一方法.


回答真正的问题.

  javac -target 1.5
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见此处

  • 请注意,如果您使用仅存在于java 1.6中的API,则执行此操作不会警告您 (7认同)

Oli*_*ger 10

是的你可以.请参阅http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html并查找"交叉编译选项"部分.简而言之,您需要为javac指定-target = 1.5.当然,Ant也支持这个标志.

  • 您确定不需要"-bootclasspath jdk1.5.0\lib\rt.jar"来阻止它使用Java 6 API吗? (2认同)

Ali*_*and 6

看看javac"-source"和"-target"选项:

http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html

- 资源发布

指定接受的源代码版本.允许以下释放值:

  • 1.3编译器不支持在JDK 1.3之后引入的断言,泛型或其他语言功能.
  • 1.4编译器接受包含断言的代码,这些代码在JDK 1.4中引入.
  • 1.5编译器接受包含JDK 5中引入的泛型和其他语言功能的代码.
  • 5 1.5的同义词.
  • 1.6这是默认值.Java SE 6中未引入任何语言更改.但是,源文件中的编码错误现在报告为错误,而不是之前的警告.
  • 6 1.6的同义词.

+

- 目标版本

生成以指定版本的VM为目标的类文件.类文件将在指定的目标和更高版本上运行,但不会在早期版本的VM上运行.有效目标是1.1 1.2 1.3 1.4 1.5(也是5)和1.6(也是6).

-target的默认值取决于-source的值: - 如果未指定-source,则-target的值为1.6

  • 如果-source为1.2,则-target的值为1.4
  • 如果-source为1.3,则-target的值为1.4
  • 对于-source的所有其他值,-target的值是-source的值.

  • 但除此之外,类库也不同.因此,如果您想确保它可以在Java5上运行,请使用JDK5,而不仅仅是带有--source 6的JDK6. (3认同)