运行处理器提供重复的类警告

时间:2011-05-16 14:26:30

标签: java annotations compilation javac

在选择了某个处理器后运行javac后,我会生成正确的源文件。不幸的是,每次重新运行该过程时,我都会看到关于duplicate class: com.....的警告(正在处理一个)。

这不会导致ant任务失败,所以这不是一个真正的问题,但我很乐意摆脱这个消息。我怎么能这样做?

我基本上在跑步:

JavaFileObject jfo = environment.getFiler().createSourceFile(somepackage + "." + myType.getSimpleName() + "Generated", myType);
Writer writer = jfo.openWriter();
generateSomeOtherClass(writer, myTypeElement);
writer.close();

1 个答案:

答案 0 :(得分:2)

我想知道这是否与应该在Java 7中修复的this bug in javac有关?编译器在运行注释处理器之前尽早发出错误,最终使错误不是真正的错误,最终一切都会出现。

我们实际编写了一个自定义Ant任务,它扩展了正常的Ant javac任务,覆盖了各种log()方法,并试图在所有注释处理完成后将可能是虚假的错误静音。我发布了这些代码,但坦率地说,它非常丑陋,而且我宁愿不在世界上释放它......很多大的粗糙的正则表达式,而且它非常脆弱......