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

时间:2009-12-18 11:14:35

标签: java java-6 java-5

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

PS:我是Java新手。

4 个答案:

答案 0 :(得分:10)

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

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


回答真正的问题。

  javac -target 1.5

有关详细信息,请参阅here

答案 1 :(得分:10)

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

答案 2 :(得分:6)

查看javac“-source”和“-target”选项:

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

  

-source 发布

     

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

     
      
  • 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。
  • 的同义词   

+

  

-target 版本

     

生成以指定版本的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的值。
  •   

答案 3 :(得分:4)

这完全取决于您使用的API。 Swing,Instrumentation,JConsole等等随着时间的推移会发生变化。

如果您尝试:

http://www.coderanch.com/t/382318/Java-General/java/New-Features-Java

它包含指向每个最新主要版本之间差异的页面链接:

http://java.sun.com/javase/6/webnotes/features.html

是最新版本中已更改/新功能的列表。

希望这会给你一些想法。

当然,你需要在1.5下编译它以使它与该JRE一起运行。