2012-07-06 42 views
17

我想编译我的.java的(几个)到一个.jar是至少Java 1.6和更新,最好Java 1.5和更新版本的Java兼容。 (我有Java 1.7.0_5如何编译支持旧版本Java的.java?

+0

看看http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig 2012-07-06 15:09:23

+0

'javac -source 1.5 -target 1.5 OverridingInternalExample.java'为我工作 – 2018-02-17 05:28:14

回答

13

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

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

2

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

如果您使用的是构建系统,Eclipse或其他一些IDE构建罐子,请注明哪一个。

+1

而'-source 1.5 ' – 2012-07-06 15:06:17

+0

我有netbeans,但我只能使用文本文件。我将如何将它应用于目录中的所有.java's? – Primm 2012-07-06 15:06:37

+1

与NetBeans右击你的项目,选择属性并更改从下拉列表中“源代码/二进制格式”朝对话的打开的底部 – tofarr 2012-07-06 15:09:09

0

您可以使用JDK的最新版本和源代码级别设置为1.5 - 只要你不使用类/ 1.5之后引入的方法,你应该确定为JVM 1.5及以上的所有版本:

-source 1.5

0

从JDK 9,javac的支持交叉编译

javac -release N ... 

一个新的选项,这相当于

javac -source N -target N –bootclasspath rtN.jar 
0

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

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