我想将我的.java(几个)编译成一个.jar
,它与至少Java 1.6
和更新版本,最好是Java 1.5
和更新版本的Java兼容。 (我有Java 1.7.0_5
)
答案 0 :(得分:18)
是的,您可以在编译时设置编译器的版本。并将您的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
- 指定接受的源代码版本。
答案 1 :(得分:9)
从JDK 9开始,javac支持交叉编译的新选项
javac --release N ...
相当于
javac -source N -target N –bootclasspath rtN.jar
答案 2 :(得分:3)
您可以使用javac -target 1.5 <source files>
。
如果您正在使用构建系统,Eclipse或其他IDE来构建jar,请指定哪一个。
答案 3 :(得分:1)
您可以指定编译器的目标版本低于构建java版本(所有答案基本上都是这样)但是您不应该:它非常混乱,因为它只有在您为实际目标版本提供类库时才有效。如果你这样做,你只需使用这个旧的Java版本进行编译就会好得多。设置更清洁,更少的东西。对于Java 9,选项有点好,但你仍然需要一个旧的JDK来rt.jar。
您可以做的是在您的ide和dedvelopment周期中使用-target
/ -bootclasspath
技巧来获得更快的编译器和更好的警告,但IT和发布版本应该使用目标版本完成。
答案 4 :(得分:0)
您可以使用最新版本的JDK并将源级别设置为1.5 - 只要您不使用1.5之后引入的类/方法,您就可以使用所有版本的JVM 1.5及更高版本:
-source 1.5
答案 5 :(得分:0)
以下命令将使用 Java 版本 1.8 编译所有 Java 类,因为默认情况下,您的代码由您拥有的最新版本编译。
javac -source 1.8 -target 1.8 *.java