如何编译支持旧版Java的.java?

我想将我的.java(几个)编译成一个.jar ,它至少与Java 1.6和更新版本兼容,最好是Java 1.5和更新版本的Java。 (我有Java 1.7.0_5

是的,您可以在编译时设置编译器的版本。 并将您的Java代码编译为旧版本的java。

来自Oracle文章: http : //docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

交叉编译示例

这里我们使用javac来编译将在1.4 VM上运行的代码。

 % javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \ -extdirs "" OldCode.java 

您可能还需要以下参数来设置表示代码的版本。

 -source release 

– 指定接受的源代码版本。

从JDK 9开始,javac支持交叉编译的新选项

 javac --release N ... 

这相当于

 javac -source N -target N –bootclasspath rtN.jar 

您可以使用javac -target 1.5

如果您正在使用构建系统,Eclipse或其他IDE来构建jar,请指定哪一个。

您可以使用最新版本的JDK并将源级别设置为1.5 – 只要您不使用1.5之后引入的类/方法,您就可以使用所有版本的JVM 1.5及更高版本:

– 源1.5

您可以指定低于构建java版本的编译器的目标版本(所有答案基本上都是这样)但您不应该:它非常混乱,因为它只有在您为实际目标版本提供类库时才有效。 如果你这样做,你只需使用这个旧的Java版本进行编译就会好得多。 设置更清洁,更少的东西。 对于Java 9,选项有点好,但是你仍然需要一个旧的JDK来rt.jar。

您可以做的是在您的ide和dedvelopment周期中使用-target / -bootclasspath技巧来获得更快的编译器和更好的警告,但是IT和发布版本应该使用目标版本完成。