2009-12-16 68 views

回答

1
public class test 
{ 
public static void main(String[] args) 
{ 
Byte b = 2; 
if(b < new Integer(5)) 
{ 
System.out.println("Working."); 
} 
} 
} 

適合我。 (Java 1.6.0_17)。

1

如果你得到一個內部編譯器錯誤(ICE),這是Java編譯器本身的一個錯誤,並不一定是你的代碼有什麼問題。

你的代碼片段在最近的OpenJDK上編譯得很好。你使用什麼Java編譯器?

0

我使用的編譯器版本是:1.6.0_16-b01(適用於6.0) 如果我切換到5.0兼容代碼,看起來問題消失。

+0

您能編譯Stafan Kendall的完整簡明示例程序嗎? – 2009-12-16 22:13:34

+0

從Stefan的回覆看來,它聽起來已經被修復成新版本(假設你們都使用「正常」的Sun javac)。如果你不使用Sun的javac,那麼我肯定會遵循Tom Hawtin的建議來獲得供應商發現的錯誤。 – ZoogieZork 2009-12-16 22:18:16

+0

給出的例子工作正常。 – Robert 2009-12-16 22:18:58

3

如果在你的編譯器的錯誤,這裏就是你要做的:

  • 確保您使用的是最新的 版本的編譯器。
  • 如果供應商有公共錯誤數據庫,請檢查(提示:使用從異常跟蹤中複製並粘貼的實際文本)。
  • 如果這是一個已知的bug,請投票,提出升級,不管。
  • 如果找不到該錯誤的副本,請提交一份帶有簡潔,可編譯(或不可)的測試用例的錯誤報告。

通常,在Q & A站點上發佈軟件產品中的隨機錯誤是沒有用的。

+0

好的,我認爲問題是代碼。謝謝 – Robert 2009-12-16 22:12:08

+1

如果編譯器拋出一個異常,這是編譯器中的一個錯誤! – 2009-12-16 22:14:13

0

我也有這個錯誤,但沒有人(1.6和1.8)的javac沒有得到正確的。有兩個以上的庫(* .jar文件),這是不同版本的重複庫。刪除重複項已解決comlie錯誤