2012-03-07 154 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編譯項目「 - >選擇你要編譯的模塊並點擊」編譯「。

最後一步實際上失敗了,所以我不確定這是否幫助。

最後,我再次編譯,錯誤消失了。

我希望有人認爲這有幫助。