2009-12-16 66 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错误