在开发模式下打开GWT应用程序时,出现以下异常。完全相同的代码可以使用mvn-gwt成功编译:compile
由以下原因引起:java.lang.ArrayIndexOutOfBoundsException:3667 atcom.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.HasaAnnotation.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)位于的java.lang.Class.forName0(本机方法)java.lang.Class.forName(Class.java:247)位于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)com.google.gwt.core.client.GGW.create(gwt.java:85)在。。。
我重写了ModuleSpace.java,并在class.forName()之前的第665行打印出类名,指出它正在尝试加载生成的GibjectorImpl.java
我发现我生成的GibjectorImpl.java大约有9MB,代码行数超过100K。
当我从GWT应用程序中随机删除一些模块时,它又能工作了,所以我猜它太大了,ASM无法编译。
有什么建议吗?感谢
环境:GWT 2.5.0、GIN 1.5.0、GWT maven插件2.5.0、Java 6 SE
尝试删除gwt-unitCache
文件夹并再次运行gwt-compile
。这帮我搞定了。
升级GIN至2.0.0修复了问题
生成的Gijector.java的大小从110K+行缩小到23行:)