我将首先提出一些我遇到的具体问题,并根据上下文进行跟进:
- 如何控制如何配置 eclipse 中的 GWT 代码验证?
- GWT 代码验证有什么作用?
- 当它扫描 java 类时,它会加载任何类吗?
- 为什么它扫描不在客户端/共享包中的类?我怎样才能让它停止?
我正在运行 Eclipse Juno。最近我团队的另一位成员将我们的项目从 GWT 2.4 升级到 2.5,我注意到的第一个影响是 GWT 代码验证会消耗资源,使我的工作空间停止,并最终因 java 堆错误而失败 - 迫使我杀死日食。
请注意,我在我的 中配置了很多堆eclipse.ini
,特别是:-Xms256m -Xmx1536m
尽管如此,为了重新获得对我的工作区的控制权,我未选中Project --> Build Automatically
,将 eclipse 配置为使用 显示堆使用情况Preferences --> General --> Show Heap Status
,并将我的堆大小eclipse.ini
增加到-Xms2048m -Xmx3072m
只是作为一个实验来看看会发生什么。
完成此操作后,我再次打开 eclipse 并让它自动构建,当它执行 GWT 代码验证阶段时,要特别注意进度条,以及堆大小:它爬了,爬了,爬了,最后在某个地方达到了峰值2G以北消耗。最终,它完成了(尽管花费的时间太长,根本不是合理的时间)。在完成后的一分钟内,一个巨大的垃圾收集事件使堆减少到只有 300 兆字节。
我在进度条下看到的更有趣:GWT 代码验证似乎正在扫描*.java
我整个项目中的每个文件:不仅仅是那些在client
和shared
包中的文件,而是所有文件。我看到了 GWT 编译器在一百万年内永远不会看到的类名。
所以看起来,虽然 GWT 编译器足够聪明,可以从入口点 GWT 模块文件开始并从那里搜索,但 GWT 代码验证过程似乎对所有内容进行了蛮力搜索。
如果它在此过程中进行任何类加载,上帝会帮助它。其中一些旧的服务器端类包含我祖先的古老罪恶,在静态初始化程序中连接到外部资源等等。
有什么方法可以让我将此验证配置为对其扫描的内容更加简洁?