【发布时间】:2013-05-01 11:44:37
【问题描述】:
我有一个自定义生成器,它只为我的项目中的某些类生成代码。以下代码位于generate 方法的开头,并将我需要处理的所有类放在clazzes 列表中
TypeOracle oracle = context.getTypeOracle();
JClassType markerInterfaceType = oracle.findType(MY_PARENT_CLASS.class.getName());
List<JClassType> clazzes = new ArrayList<JClassType>();
for (JClassType classType : oracle.getTypes()) {
if (!classType.equals(markerInterfaceType)
&& classType.isAssignableTo(markerInterfaceType)) {
clazzes.add(classType);
}
}
这段代码已经一年多没有改变了,但是从上周开始,生成器似乎没有考虑到一些类。
经过一番挖掘,我发现这些类甚至不在oracle.getTypes()返回的列表中
- 那些被忽略的类不是新创建的类(有些保持几个月不变)
- 据我所知,没有办法区分将被忽略的类与任何其他类
- 我们的 gwt 版本没有升级(我们中的一些人使用 2.5.0,其他人使用 2.5.1)
- 这些类使用的包也没有升级
-
oracle.findType(MISSING_CLASS.class.getName())返回null - 这个问题只出现在某些人身上,而不是在同一个班级里
- 重命名有问题的类似乎可以解决问题
我最好的猜测是我在某个地方遇到了缓存问题,但我不知道去哪里找。
【问题讨论】:
-
您是否尝试过删除 gwt-UnitCache 文件夹的内容?对于我来说,它通常有助于修复像这样看似奇怪的错误。另外,您是否有一些缺失类的示例名称?由于重命名它们会有所帮助,因此在缓存相关问题旁边,这也可能与名称相关。
标签: java gwt types code-generation