注意:請做而不是評論所有交叉編譯的風險。謝謝。哪個JDK的發行版可以運行`javac -source 1.6 -target 1.5`?
我有,我們需要有Java 6的源代碼編譯爲Java 5 JVM的情況(以確保JAX-WS的使用是正確的)。此前我們已經與螞蟻ant腳本做到了這一點(這顯然可以),但遷移到Maven的後,我們發現它的javac抱怨結束:
$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
有用於Linux任何 Java發行(Ubuntu的11.10 ,x86)的javac可以做到這一點?
編輯:它似乎不是,因爲在javac中的限制是相同的。解決方案(使這個需求消失)是從默認的javac編譯器更改爲maven-compiler-plugin中的eclipse編譯器。
編輯:我發現,Eclipse編譯器生成的javadoc的效用不同意匿名內部類的字節碼。我正在爲這個問題準備一份錯誤報告。
這個問題是如何不同於你的另一個關於此:http://stackoverflow.com/questions/8970920/maven-javac-source-release-1-6-requires-target-release-1-6 – 2012-02-13 13:01:46
爲什麼你需要'source'參數嗎?使用Java5中沒有的類嗎? – 2012-02-13 13:02:30
@ThorbjørnRavn Andersen:如果你使用* -target 1.5 *進行編譯,那麼你會如何知道,例如,* ConcurrentSkipListSet *在1.5上不存在?現在我們確實需要支持那些不會(也不會)擁有Java 6的舊OS X機器,但我們只是簡單地使用JDK1.5編譯器,這很方便,因爲我們得到:*「找不到符號:class ConcurrentSkipListSet」*(實際上IntelliJ被設置爲1.5,但無論如何,這只是一個例子)。如果您需要定位1.5個JVM,不會使用JDK1.5編譯器編譯源代碼是否是一種選擇? (哦,你想保持覆蓋,你評論說,在你自己的愚蠢) – TacticalCoder 2012-02-13 13:18:37