0

在我的 Android 应用程序中,我有一个注释处理器,它使用生成的文件JavaPoet并将它们放在包 generate.schema 下。

文件生成正确。每当我像这样使用生成的文件时

GeneratedFile.someGeneratedMethod();

我收到以下错误:

error: package generated.schema does not exist.

但是如果我包含完全限定的类名而不是像这样导入

generated.schema.GeneratedFile.someGeneratedMethod();

代码编译并运行没有任何错误。

我不想在每次使用GeneratedFile. 我不确定我做错了什么,因为我仍在学习使用Annotation Processor

其他库(包括 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返回ie的包名generated.schema
4

1 回答 1

0

在生成类时,我正在等待最后一个处理过程。封装的代码生成

if (roundEnvironment.processingOver())

因此,我收到了警告:

上一轮创建的类型为“generated.schema.GeneratedFile”的文件将不进行注释处理。

我在发布问题之前就知道了这个警告,但是我愿意忽略对我生成的文件的进一步注释处理,以便一次生成所有文件。

即使从文件生成中删除最后一轮/通过检查后,我也可以正确(通过导入)访问生成的文件而不会出现任何错误;我仍然不明白在所有回合中生成文件如何影响在构建期间访问文件import

为此,我将发布一个新问题

于 2019-07-01T07:21:11.103 回答