3

我在 PlayN 中有一个项目,它允许我将单个 Java 代码库编译到阳光下的每个平台;我正在构建 gwt trunk,它目前允许在纯 java 实现中调用 GWT.create()。有一些需要跳过的环节,即调用 ServerGwtBridge.getInstance().register(String.class, new ClassInstantiator() {...}); GWT.create() 使用的每个类。

因此,我没有手动编写每个绑定的代码,而是在我的类上设置了一些注释,并制作了一个生成器,它可以输出注册 ClassInstatiators 所需的初始化代码。生成器在 gwt 模块上运行良好,我制作了一个 maven mojo 来在我的纯 java 类上运行生成器。所以,现在我所有的模块,gwt、java 和 android 都可以使用 GWT.create(),并且我可以支持来自 gwt.xml 模块文件的替换语法。

问题在于,任何引用任何 gwt 不支持的类或​​方法的类都会被 gwt 预编译器修剪掉。它们仍然存在于单元缓存中,但生成器的 TypeOracle 不再看到它们。我不想复制粘贴大量代码来阻止编译器删除无效单元;我看到一些代码参考 NameEnvironmentAnswer 似乎允许编译中的无效单元,但无法弄清楚如何使其工作。

我无意链接此代码,我只想要一个填充的 TypeOracle 让我的生成器运行,这意味着我需要编译器停止修剪无效单元。

4

0 回答 0