内部编译器错误ArrayIndexOutOfBoundsException:-1 ... generateUnboxingConversion

时间:2009-12-16 21:55:29

标签: java boxing autoboxing unboxing

在尝试编译时遇到了一些奇怪的异常:

  Byte b = 2;
  if (b < new Integer(5)) {
     ...
  }

这是一个有效的检查(取消装箱 - 隐式转换 - 拆箱)吗?

5 个答案:

答案 0 :(得分:3)

如果编译器中存在错误,请执行以下操作:

  • 确保您使用的是最新版本 版本的编译器。
  • 如果供应商有公共错误数据库,请检查(提示:使用从异常跟踪中复制和粘贴的实际文本)。
  • 如果这是一个已知的错误,请投票,提升升级,无论如何。
  • 如果您找不到该错误的副本,请提交一份简明,可编辑(或不是!)测试用例的错误报告。

一般来说,在Q&amp; A网站上发布软件产品中的随机错误是没有用的。

答案 1 :(得分: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)。

答案 2 :(得分:1)

如果您遇到内部编译器错误(ICE),那么它就是Java编译器本身的一个错误,不一定是您的代码有任何问题。

您的代码段在最近的OpenJDK上编译正常。您使用的是什么Java编译器?

答案 3 :(得分:0)

我使用的编译器版本是:1.6.0_16-b01,符合6.0标准 如果我切换到5.0兼容代码,看起来问题就会消失。

答案 4 :(得分:0)

我也有这个错误,但没有人(1.6和1.8)javac没有做对。有两个以上的库(* .jar文件),它们是重复库的不同版本。删除重复项解决了comlie错误