我一直在使用的參數編譯我的源代碼與Java版本1.6 -source 1.5和-target 1.5和犯規抱怨,在所有的編譯器。Java和「朝前」兼容性問題
然而,應用程序將無法與Java 1.5由於缺少方法運行。當然,我可以重寫一些我的源代碼是1.5兼容的,但我不明白的是;底部的java字節碼不應該是「前端」兼容?
是不是轉換成字節碼的方法?是否有可能將1.6 libs/methods(formely String.isEmpty())編譯爲1.5字節碼並將其全部打包到歸檔中?
我一直在使用的參數編譯我的源代碼與Java版本1.6 -source 1.5和-target 1.5和犯規抱怨,在所有的編譯器。Java和「朝前」兼容性問題
然而,應用程序將無法與Java 1.5由於缺少方法運行。當然,我可以重寫一些我的源代碼是1.5兼容的,但我不明白的是;底部的java字節碼不應該是「前端」兼容?
是不是轉換成字節碼的方法?是否有可能將1.6 libs/methods(formely String.isEmpty())編譯爲1.5字節碼並將其全部打包到歸檔中?
全套的命令行選項,你需要的是:
java -source 1.5 -target 1.5 -bootclasspath /usr/jdk/jdk1.5.0_17/jre/lib/rt.jar
(更改引導類路徑,以然而你的機器安裝。)
當然,API的增強功能在1.6將不會在1.5。 1.5通過其服務壽命終了的大部分時間,所以你可能要考慮最低1.6。
我不相信java會向後重新編譯原生Java代碼。所以,如果你犯了一個1.6調用 - 你將不能訪問它在1.5
如果您正在運行的JRE是1.6,那麼這一切取決於哪個JRE運行您的代碼 - 它正在提供這些庫。 – 2009-07-07 19:34:10
如果你的意思基本Java庫方法,則沒有,這些方法不是在編譯時轉換成字節碼;它們已經被Sun(或第三方JVM分發器)編譯爲字節碼並安裝在您的操作系統上。它們是,編號爲,由編譯後的代碼使用。
您可以將正在編譯的庫更改爲較舊的庫。在eclipse這樣的軟件包中,每個安裝的JDK都應該顯示在「Select library」窗口中,您可以選擇希望編譯哪一個。
如果沒有,你應該能夠覆蓋它在你的Ant文件或CLI命令編譯。
如果定位一個老版本的JVM,這真的有許多工作要做,或者您可以使用電話,將無法使用。
源參數只能使在語言的語法水平(源= 1.4將例如抱怨,如果它遇到的仿製藥)編譯器檢查,但不會限制你只能使用指定的Java版本可用的API。
目標參數,將可通過指定版本的運行時可以使用,但不會(就像-source)驗證任何API符合編譯器的輸出類文件。
唯一的問題,Mac OSX,它說自己它是唯一的操作系統與完全集成的Java,不支持1.6:/ – 2009-07-08 19:43:08