在任何人對EOL的JDK尖叫之前,我想指出我的問題是而不是關於如何編譯以下內容。這裏有一個真正的問題,它不是關於JDK 1.5被解僱......JDK編譯器錯誤
以下在JDK 1.5中,最高爲1.5.0_22(我能找到的最後一個)在我的系統上產生一個編譯器錯誤:
private Object[] boozinga() {
boolean b = Math.abs(42) > 0;
Object[] res = new Object[1];
res[0] = b ? new int[1] : new String[1];
return res;
}
更改Math.abs(42)> 0到真允許編譯。
改變三元 「分配」 到的if/else允許編譯。
使用JDK 1.6允許編譯。
所以我想知道:在Java 1.5下的上述代碼中有沒有合法的東西,並且在Java 1.6下允許?
它對於那些在Java 1.5下的人來說是否會崩潰?
崩潰,說是這樣的:
An exception has occured in the compiler (1.5.0_22). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
我把它填充一個EOL'ed JDK的bug報告是徒勞無益的exercice但儘管如此,我還是想知道,如果上面是是否有效的Java 1.5代碼。
至於爲什麼我們遇到這種情況,我們仍然沒有解決以下問題:http://stackoverflow.com/questions/2299250/java-vm-reproducable-sigsegv-on-both-1-6-0-17 - 和 - 1-6-0-18 - 如何報告以及在我們的系統上,我們可以可靠地再現JDK 1.6 * sigsegv *,同時處理大量的數據。有趣呃!?一個* sigsegv * JDK 1.6和一個1.5編譯器異常在一個項目中。不,我們的RAM /系統沒有錯誤; ) – SyntaxT3rr0r 2011-06-01 17:07:19
代碼看起來對我來說合法。看起來像一個錯誤。 – jtahlborn 2011-06-01 17:24:32
是否有人安裝了1.5(可能是OS X上的某個人)嘗試編譯它? – SyntaxT3rr0r 2011-06-01 17:31:32