在开发模式下打开我的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
答案 0 :(得分:2)
尝试删除gwt-unitCache
文件夹并再次运行gwt-compile
。这为我修好了。
答案 1 :(得分:0)
将GIN升级到2.0.0解决了我的问题
生成的Ginjector.java的大小从110K +行减少到23行:)