我有一个自定义生成器,只为我项目中的某些类生成代码。以下代码位于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()
oracle.findType(MISSING_CLASS.class.getName())
返回null
我最好的猜测是我在某处有缓存问题,但我不知道在哪里看。
答案 0 :(得分:0)
正如Mark Tielemans在他的评论中所说,删除你的gwt-UnitCache目录(如果你正在使用Eclipse,应该在项目的根目录下)并重建。这应该为你纠正这个问题。
答案 1 :(得分:0)
答案可能为时已晚,但过去3天我遇到了这个问题。没有多少清除gwt-UnitCache文件夹有帮助。终于找到了问题。没有被oracle拿起的类有一个gwt-ext类的引用,我没有在我的模块定义(.gwt.xml文件)中继承gwt-ext。删除该引用修复了该问题。因此,使用类中可能未在模块定义中引用或不属于其中的任何内容都可能导致Oracle无法获取您的类。干杯!
答案 2 :(得分:0)
T 他错过了课程并没有正确编译而且默默地失败了。典型的原因是超级源,因为否则正常的Java编译已经失败了编译。