我在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模块文件中的replace-with语法。
麻烦的是,任何引用任何gwt不支持的类或方法的类都会被gwt预编译器修剪掉。它们仍然存在于单元缓存中,但生成器的TypeOracle不再看到它们。我不想复制粘贴大量代码来阻止编译器删除无效单元;我看到一些代码引用NameEnvironmentAnswer似乎允许编译中的无效单元,但无法弄清楚如何使其工作。
我无意链接此代码,我只想为我的生成器运行一个填充的TypeOracle,这意味着我需要编译器停止修剪无效单元。