41

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

4

6 回答 6

28

是的,您可以在编译时设置编译器的版本。并将你的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

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

于 2012-07-06T15:11:22.893 回答
25

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

javac --release N ...

这相当于

javac -source N -target N –bootclasspath rtN.jar
于 2015-11-02T17:41:58.610 回答
3

您可以使用javac -target 1.5 <source files>.

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

于 2012-07-06T15:05:51.127 回答
1

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

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

于 2016-08-21T18:04:03.940 回答
0

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

-源 1.5

于 2012-07-06T15:06:36.500 回答
0

以下命令将使用 java 版本 1.8 编译所有 java 类,因为默认情况下,您的代码由您拥有的最新版本编译。

javac -source 1.8 -target 1.8  *.java
于 2021-01-26T08:21:26.930 回答