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