2012-07-06 116 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和發佈版本應該使用目標版本來完成。