2

在开发模式下打开我的 GWT 应用程序时出现以下异常。完全相同的代码可以使用 mvn gwt:compile 成功编译

引起:java.lang.ArrayIndexOutOfBoundsException: com.google.gwt.dev.asm.ClassReader.readClass(ClassReader.java:1976) 的 com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:) 的 3667 464) 在 com.google.gwt.dev.shell.rewrite.HasAnnotation.hasAnnotation(HasAnnotation.java:45) 在 com.google.com.google.gwt.dev.asm.ClassReader.accept(ClassReader.java:420) .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(Native Method) 在 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) at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49) at com.google.gwt.core.shared.GWT.create(GWT.java:57)在 com.google.gwt.core.client.GWT.create(GWT.java:85) 在 ...

我过度使用 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

4

2 回答 2

2

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

于 2013-09-11T13:21:42.420 回答
1

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

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

于 2012-12-07T05:00:18.810 回答