簡體   English   中英

如何編譯支持舊版 Java 的 .java?

[英]How do I compile a .java with support for older versions of Java?

我想將我的 .java(幾個)編譯成一個.jar ,它至少與Java 1.6和更新版本兼容,最好是Java 1.5和更新版本的 Java。 (我有Java 1.7.0_5

是的,您可以在編譯時設置編譯器的版本。 並將你的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 和 dedvelopment 周期中使用-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM