【发布时间】:2010-08-27 00:34:39
【问题描述】:
我正在使用第 3 方注释处理器从项目中的注释类生成元数据代码(.java 文件)。 我已经通过 Eclipse(属性 -> Java 编译器 -> 注释处理)成功配置了处理器,并且代码生成工作正常(代码是自动创建和生成的)。此外,Eclipse 成功地自动完成了生成的类及其字段,没有任何错误。假设我有一个类“some.package.Foo”并且生成的元数据类是“some.package.Foo_”。在自动补全的帮助下,我可以在 Eclipse 编辑器中得到以下代码,没有任何错误:
import some.package.Foo_;
...
public class Test {
void test() {
Foo_.someField = null; // try to access a field from the generated class Foo_
}
}
但是,一旦我实际构建项目(或仅保存文件,因为自动构建已启用),我就会收到错误消息,提示“some.package.Foo_”无法解决。 似乎 Eclipse 正在同时生成和编译 some.package.Foo_,或者更有可能。
我找到了两个临时解决方案(实际上首先阻碍了注释处理器的使用):
- 在生成的类的每个构建之前,右键单击每个生成的文件,转到“属性”并取消选中“派生”复选框。之后,我对项目进行了清理,并且导入很好 - 没有更多的错误。但是,如果我再做一次清理,错误会再次出现,因为文件的生成会导致再次检查“派生”标记(自动)。所以这真的很烦人也很耗时。
- 我还取消选中“派生”勾选 从所有这些文件中,这次 我取消选中“派生”勾选 源文件夹和包 包含这些文件。然后我禁用 注释处理器,然后 做清理。没有了 导入错误,即使我再做一次 清理,但没有任何好处 使用注释处理器, 因为如果我要改变一些东西 这将更新模型,我需要 打开注释处理器 重新开始,重复这个乏味的 关闭它的程序,之后 已生成新版本 那些文件。
这是 Eclipse 中的错误吗?如果是,是否有比我上面所说的两个更好的解决方法或快速修复?如果不是,我应该如何解决这个问题?
我还尝试在构建路径上重新排列库的顺序,但没有帮助。
【问题讨论】:
标签: java eclipse import annotation-processing