在我们的项目中,我们希望为用户界面对话框创建唯一标识符。为了确保开发人员不为对话框创建重复的标识符,我创建了一个注释处理器,用于检查" Dialog注释" (它包含唯一标识符),如果检测到重复的标识符,则通过Eclipse Problems视图中的Messager类创建错误。
我希望处理器能够处理所有使用对话框注释注释的类,但是只有在Eclipse中调用完整的构建时才会这样做。但是,如果我更改单个对话框类并保存它,处理器只处理这个单一对话框(我相信这称为增量构建),因此我无法检查其他对话框是否已经分配了相同的标识符。
我尝试在Run this container's processors in batch mode
文件中设置.factorypath
,但似乎没有效果。 Factory Path Preferences
的eclipse文档说明了这个选项:
此选项仅适用于使用Java 5 Mirror API的处理器。它不会影响使用Java 6注释处理API的处理器。
我确实使用Java 6注释处理API。所以这似乎也不是一种选择。
有没有办法让它处理所有带注释的类 - 甚至是未更改的类?我也很高兴听到其他方法来解决最初的问题。
答案 0 :(得分:1)
AnnotationProcessor只处理已编译的类,所以难怪你有麻烦。
我假设您的处理器在运行时收集所有ID。将收集的id存储到缓存(例如文件)中并检查是否存在在每次编译时扫描所有带注释的类(所有类都是精确的)的情况会更好。这样,只需要单个编译类来注册id
。每个未来的修改都将检查已编译的,未修改的类,并重新检查它们。