编译GinjectorImpl.java时,GWT dev模式会抛出ArrayIndexOutOfBoundsException

时间:2012-12-07 04:20:45

标签: java gwt gin

在开发模式下打开我的GWT应用程序时,我遇到异常。完全相同的代码可以使用mvn gwt:compile

成功编译
  

引起:java.lang.ArrayIndexOutOfBoundsException:3667 at   com.google.gwt.dev.asm.ClassReader.readClass(ClassReader.java:1976)     在com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:464)     在com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:420)     在   com.google.gwt.dev.shell.rewrite.HasAnnotation.hasAnnotation(HasAnnotation.java:45)     在   com.google.gwt.dev.shell.CompilingClassLoader.findClass(CompilingClassLoader.java:1100)     在   com.google.gwt.dev.shell.CompilingClassLoader.loadClass(CompilingClassLoader.java:1203)     在java.lang.ClassLoader.loadClass(ClassLoader.java:247)at   java.lang.Class.forName0(Native Method)at   java.lang.Class.forName(Class.java:247)at   com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:665)     在   com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:468)     在   com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)     在com.google.gwt.core.shared.GWT.create(GWT.java:57)at   com.google.gwt.core.client.GWT.create(GWT.java:85)at ...

我过度使用ModuleSpace.java并在Class.forName()之前在第665行打印出类名,指出它正在尝试加载生成的GinjectorImpl.java

我发现我生成的GinjectorImpl.java大约是9MB,并且有100K +代码行。

当我从我的GWT应用程序中随机删除一些模块时,它再次起作用,所以我猜它对于ASM来说太大了。

有什么建议吗?感谢

环境: GWT 2.5.0,GIN 1.5.0,gwt-maven-plugin 2.5.0,Java 6 SE

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

将GIN升级到2.0.0解决了我的问题

生成的Ginjector.java的大小从110K +行减少到23行:)