我的应用程序应该运行的目标系统使用Java 6.在我的开发机器上,我有Java 7.我可以在不下载Java 6的情况下进行开发吗?
我在http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html上找到了一个交叉编译的例子:
javac -source 1.6 -target 1.6 -bootclasspath C:\jdk1.6.0\lib\rt.jar -extdirs "" OldCode.java
但是,这也需要存在一个属于Java 6的rt.jar.有更简单的方法吗?
新Java版本通常会更改Java语言(源和类文件格式)和Java API.
Java编译器可以以旧格式发出类文件,即使源是新格式(这些版本分别由-target
和指定-source
).因此,您不需要旧的编译器来定位旧的JVM.
但是,Java API的更改有些难以解决.最简单的方法是使用您目标的Java版本的API进行编译(-bootclasspath
).当然,您可能会对使用较新的API感到自信,并跳过此步骤,但确保实际编译和测试旧运行时库的唯一方法.
简而言之,虽然交叉编译有助于相同的源可以与不同的Java版本一起使用,但您应该针对您打算使用的实际Java版本进行编译和测试,这需要旧的JRE(或JDK).
顺便说一下,Java IDE中也提供了所有这些设置.例如,在eclipse中,可以在项目的编译器设置中设置合规级别,并将相应的"JRE系统库"添加到项目的"构建路径"中: