如何编译支持旧版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和发布版本应该使用目标版本完成。