如何编译支持旧版本Java的.java?
问题描述:
我想编译我的.java的(几个)到一个.jar
是至少Java 1.6
和更新,最好Java 1.5
和更新版本的Java兼容。 (我有Java 1.7.0_5
)如何编译支持旧版本Java的.java?
答
是的,你可以在编译时设置编译器的版本。并将你的java代码编译成旧版本的java。
从甲骨文的文章: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html
交叉编译例
在这里我们使用javac编译将在1.4虚拟机上运行的代码。
% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \
-extdirs "" OldCode.java
您可能还需要以下参数才能设置代表您的代码版本。
-source release
- 指定接受的源代码的版本。
答
您可以使用JDK的最新版本和源代码级别设置为1.5 - 只要你不使用类/ 1.5之后引入的方法,你应该确定为JVM 1.5及以上的所有版本:
-source 1.5
答
从JDK 9,javac的支持交叉编译
javac -release N ...
一个新的选项,这相当于
javac -source N -target N –bootclasspath rtN.jar
答
您可以指定编译器比构建Java较低的目标版本版本(所有答案基本上都是这样说的),但是你不应该这么做:它非常混乱,因为它只有在你为实际的目标版本提供类库时才会有效。如果你这样做,你只需使用这个旧的Java版本进行编译就会好很多。更清洁,更少的东西来设置。对于Java 9,选项稍微好一点,但仍需要一个旧的JDK来存放rt.jar。
你可以做的是在你的IDE和开发周期中使用-target
/-bootclasspath
技巧来获得更快的编译器和更好的警告,但是IT和发布版本应该使用目标版本来完成。
看看http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig 2012-07-06 15:09:23
'javac -source 1.5 -target 1.5 OverridingInternalExample.java'为我工作 – 2018-02-17 05:28:14