Java 内部编译器错误ArrayIndexOutOfBoundsException:-1。。。generateUnboxingConversion
我在编译时遇到了一些奇怪的异常:Java 内部编译器错误ArrayIndexOutOfBoundsException:-1。。。generateUnboxingConversion,java,boxing,autoboxing,unboxing,Java,Boxing,Autoboxing,Unboxing,我在编译时遇到了一些奇怪的异常: Byte b = 2; if (b < new Integer(5)) { ... } 字节b=2; if(b
Byte b = 2;
if (b < new Integer(5)) {
...
}
字节b=2;
if(b<新整数(5)){
...
}
这是一个有效的检查(取消装箱隐式强制转换-取消装箱)?公共类测试
{
公共静态void main(字符串[]args)
{
字节b=2;
if(b<新整数(5))
{
System.out.println(“工作”);
}
}
}
对我有用。(Java 1.6.0_17)。如果出现内部编译器错误(ICE),这是Java编译器本身的一个错误,不一定是代码有任何错误
您的代码片段在最近的OpenJDK上编译得很好。您使用的是什么Java编译器?我使用的编译器版本是:1.6.0\u 16-b01 for 6.0兼容
如果切换到兼容5.0的代码,问题似乎消失了。如果编译器中存在错误,请执行以下操作:
- 确保您使用的是最新版本 编译器的版本
- 如果供应商有一个公共bug数据库,请检查(提示:使用实际文本副本并从异常跟踪粘贴)
- 如果这是一个已知的bug,那么投票表决,提出升级,不管怎样
- 如果找不到bug的副本,请提交一份带有简明、可编译(或不可编译)测试用例的bug报告
一般来说,在问答网站上发布软件产品中的随机错误是没有用的。我也有这个错误,但javac没有一个(1.6和1.8)是错误的。有两个以上的libs(*.jar文件),这是重复libs的不同版本。删除重复项解决了comlie错误您使用的java版本是什么?我刚刚在1.6.0_17上测试了这个程序,它运行正常。你能编译Stafan Kendall完整、简洁的示例程序吗?从Stefan的回答来看,它似乎已经在更新的版本中得到了修复(假设你们都在使用“正常”的Sun javac)。如果您没有使用Sun的javac,那么我肯定会按照Tom Hawtin的建议让供应商注意到bug。因此,这是您引用的代码之外的问题。你能构造一个失败的简单例子吗?我发现了这个问题。如果删除了行“System.out.println(“Working.”);”,并且If为空,则抛出该异常。这会引发相同的异常:“inta=4;如果(b>2&&b
public class test
{
public static void main( String[] args )
{
Byte b = 2;
if( b < new Integer(5) )
{
System.out.println( "Working." );
}
}
}