2012-03-07 122 views
2

在编译期间可能会导致这堆错误的原因是什么? 我使用GWT 2+与蚀3.7gwt编译错误

[ERROR]意外的内部编译器错误 `java.lang.ArrayIndexOutOfBoundsException:986507在 com.google.gwt.dev.asm.ClassReader.readUnsignedShort(ClassReader。 java:1850) at com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:484) at com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:420) at com.google.gwt.dev.javac.TypeOracleMediator $ TypeData.getCollectClassData(TypeOracleMediator.java:147) at com.google.gwt.dev.javac.TypeOracleMediator.addNewTypes(TypeOracleMediator.java :390) 在 com.google.gwt.dev.javac.TypeOracleMediatorFromSource.addNewUnits(TypeOracleMediatorFromSource.java:52) 在 com.google.gwt.dev.javac.CompilationState.assimilateUnits(CompilationState.java:164) 在 com.google.gwt.dev.javac.CompilationState。(CompilationState.java:82) 在 com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:450) 在 com.google .gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:370) at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:360) at com.google.gwt.dev。 Precompile.p重新编译(Precompile.java:252) com.google.gwt.dev.Precompile.precompile(Precompile.java:233) com.google.gwt.dev.Precompile.precompile(Precompile.java:145)at com.google.gwt.dev.Compiler.run(Compiler.java:232)at com.google.gwt.dev.Compiler.run(Compiler.java:198)at com.google.gwt.dev.Compiler $ 1 .run(Compiler.java:170)at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88) at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82) at com.google.gwt.dev.Compiler.main(Compiler.java:177)关闭 线程“UnitWriteThread”中的PersistentUnitCache线程异常 java.lang.NullPointe rException在 com.google.gwt.dev.util.DiskCache.transferToStream(DiskCache.java:183) at com.google.gwt.dev.javac.CompiledClass.writeObject(CompiledClass.java:163) at sun。 reflect.GeneratedMethodAccessor22.invoke(未知来源)处 java.lang.reflect.Method.invoke(未知来源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.io.ObjectStreamClass.invokeWriteObject(未知来源) java.io.ObjectOutputStream.writeSerialData(Unknown Source)at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)at java.io.ObjectOutputStream.writeObject0(Unknown Source)at java.io.ObjectOutputStream.writeArray(Unknown小号乌尔斯河)在 java.io.ObjectOutputStream.writeObject0(未知来源)在 java.io.ObjectOutputStream.defaultWriteFields(未知来源)在 java.io.ObjectOutputStream.writeSerialData(未知来源)在 java.io.ObjectOutputStream.writeOrdinaryObject (Unknown Source) java.io.ObjectOutputStream.writeObject0(Unknown Source)at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)at java.io.ObjectOutputStream.writeSerialData(Unknown Source)at java.io.ObjectOutputStream .writeOrdinaryObject(Unknown Source)在 java.io.ObjectOutputStream.writeObject0(来源不明)在 java.io.ObjectOutputStream.writeObject(来源不明)在 com.google.gwt.dev.javac.PersistentUnitCache $ UnitWriter.run(PersistentUnitCache.java:226)

回答

0

不能准确地说没有你的代码,看到时,而不是你的代码错误来源,我猜你有一些数组,你试图访问该数组的索引,实际上不存在

0

绝对是一个编译器错误。 看着asm code - 数组变量超出范围是: 要解析的非标准类。此字段用于属性子类,通常不需要类生成器或适配器。

您是否有任何不匹配的bin/lib jar或可执行文件? 您可以将违规代码本地化为匿名或内部类吗?

0

尝试删除gwt-unitCache文件夹并再次运行gwt-compile。这为我修好了。

0

我有一个非常类似的问题使用eclipse luna + GWT 2.7.0 + Java 1.7 + Maven插件3.1.1。 我正试图编译超级开发模式的GWT,但总是得到一个java.lang.ArrayIndexOutOfBoundsException。 我认为这是因为编译器试图编译不应该被编译的类(比如测试类),但我不确定。

的步骤我把来解决这个问题:

  1. 清洁的目标文件夹,从展开组件(右键单击该项目在eclipse
  2. 删除测试文件夹 - >“部署大会” - >选择测试文件夹并单击“删除”
  3. 使用GWT插件编译:在eclipse中选择项目 - >单击“GDT Pulldown”按钮(安装google插件) - >“GWT编译项目“ - >选择你要编译的模块并点击”编译“。

最后一步实际上失败了,所以我不确定这是否帮助。

最后,我再次编译,错误消失了。

我希望有人认为这有帮助。