6

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

PS:我是Java新手。

4

4 回答 4

10

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

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


回答真正的问题。

  javac -target 1.5

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

于 2009-12-18T11:16:51.313 回答
10

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

于 2009-12-18T13:11:36.043 回答
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 的值。
于 2009-12-18T11:26:03.697 回答
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 一起运行。

于 2009-12-18T11:18:40.637 回答