在我的Android应用程序中,我有一个注释处理器,它使用JavaPoet
生成文件并将它们放在package生成的.schema下。
文件正在正确生成。每当我像这样使用生成的文件时
GeneratedFile.someGeneratedMethod();
我收到以下错误:
error: package generated.schema does not exist.
但是如果我包含完全限定的类名而不是像这样导入
generated.schema.GeneratedFile.someGeneratedMethod();
代码编译并运行时没有任何错误。
我不想每次使用GeneratedFile
时都添加完整的软件包。我不确定我做错了什么,因为我仍在学习使用注释处理器。
由其他库(包括 Realm、DataBinding(生成的文件都按预期正常工作。
文件生成 :
使用JavaPoet,我运行以下代码。
if (roundEnvironment.processingOver()) {
for (TypeElement element : apiList) {
TypeSpec clazz = generateFile(element);
JavaFile.builder(NamespaceCreator.generateClassPackage(element), clazz)
.build()
.writeTo(filer);
}
}
-
NamespaceCreator.generateClassPackage(element)
返回class
的包名称,即generated.schema
。
在生成类时,我正在等待最后一个处理过程。 封装的代码生成
if (roundEnvironment.processingOver())
因此,我收到了警告:
在上一轮中创建的类型"created.schema.GeneratedFile"的文件将不受注释处理。
在发布问题之前,我就知道了这个警告,但是为了简化一次性生成所有文件的简单性,我愿意忽略对生成的文件的进一步注释处理。
即使,在从文件生成中删除最后一轮/通过检查后,我可以正确(通过导入(访问生成的文件而不会出现任何错误;我仍然不明白在所有回合中生成文件如何影响在使用 import
构建期间访问文件。
为此,我将发布一个新问题。