2016-02-12 57 views
1

我有我的java源代碼,我想編譯1.5編譯器,它具有與兼容的兼容的jar文件的依賴關係。 我能成功編譯我的Java代碼與下面的命令 -classpath中的不同編譯版本的jar文件

C:\Program Files\Java\jdk1.5.0_22\bin>javac -source 1.5 -target 1.5 -bootclasspa 
th "C:\Program Files\Java\jdk1.5.0_22\jre\lib\rt.jar" -classpath "C:\Users\usr1\Documents\Software\jars\commons-io-2.4-bin\commons-io-2.4\commons-io-2.4.jar" 
Test.java 

現在,我將與Java 1.8這是非常正常運行。 Java可執行文件不會有任何問題。

但我想知道在編譯我的源代碼時有任何不可預見的問題,1.5具有1.6兼容jar文件的編譯器在classpath中。

方面注意:這不是假想的想法,而是我的項目的用例。

+1

是的,這可以打破,如果Java 6代碼調用Java 5中不可用的方法。您很可能會發現代碼正在運行的時間。我不打算問爲什麼你使用Java 5運行... –

+0

所有版本的1.8以上的Java都不再受支持。你爲什麼要對1.5進行編譯? – 2016-02-12 13:15:07

+0

當我執行時,我確實執行了1.8。這不會有問題。 我對編譯更加好奇.. – user1873379

回答

1

在我看來,在你的情況下,你應該沒有問題。 當你從jar文件中編譯一個包含代碼的java文件時,編譯器可能做的是用jar文件中存在的方法簽名替換方法調用。 稍後在運行時,它會嘗試從jar文件加載確切的方法調用。因此,您會看到,只有您可以接收到的異常可能是在運行時。

0

如果試圖在Java 1.5中運行Java 1.6,你可能會得到一個java極大極小誤差 但你仍然可以在1.5 compail如果你的代碼沒有任何具體的1.6代碼

+0

你的回答是正確的,但完全不符合要求提出的問題。 – ramasCoder

相關問題