GWT TypeOracle.getTypes不返回所有类型

Gar*_*gos 8 java gwt types code-generation

我有一个自定义生成器,只为我的项目中的某些类生成代码.下面的代码位于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);
  }
}
Run Code Online (Sandbox Code Playgroud)

这段代码已经保存了一年多,但自上周以来,似乎发电机没有考虑到几个等级.

经过一番挖掘,我发现那些类甚至不在返回的列表中 oracle.getTypes()

  • 那些被忽略的类不是新创建的类(有些类在几个月内保持不变)
  • 据我所知,没有办法区分将被忽略的类与任何其他类
  • 我们的gwt版本没有升级(我们中的一些人使用2.5.0,其他人使用2.5.1)
  • 这些类使用的包也没有升级
  • oracle.findType(MISSING_CLASS.class.getName()) 回报 null
  • 问题只出现在某些人身上,但不会出现在同一个课程上
  • 重命名有问题的类似乎可以解决问题

我最好的猜测是我在某处有缓存问题,但我不知道在哪里看.

Ric*_*kes 0

正如 Mark Tielemans 在他的评论中所述,删除 gwt-UnitCache 目录(如果您使用 Eclipse,则应该位于项目的根目录下)并重建。这应该会为你解决这个问题。