0

我已经使用 JavaPoet 库编写了一个注释处理器,并将其作为 Java 库模块包含在我的项目中。它编译并且工作正常。问题是 - Android Studio 内联编译器向我显示了不应该存在的错误。

  1. 由于某种原因,它无法识别参数中的省略号
    第一个错误
  2. 和上面一样。
    在此处输入图像描述
  3. 它表明没有将 Filer 类型作为参数的 writeTo 方法,尽管当您选择 Go To > Declaration 选项时显然有一个。正如我所提到的 - 它编译得很好。
    在此处输入图像描述

我已经尝试过:

  1. 清洁和重建项目- 没有工作
  2. 多次同步 gradle -没用
  3. 刷新 gradle 项目-没用
  4. 使用 File > Invalidate Cache/Restart 选项- 不起作用
  5. 删除 .gradle 和 .idea 文件夹并再次同步- 无效
  6. 从项目和磁盘中删除我的 Java 库模块并使用相同的类重新创建它- 也不起作用

总是相同的三个错误,所以我在这里很茫然。不得不提的是,当我将 JavaPoet 版本从 1.12.1 降级到 1.9.0 时,就会出现这个问题(Java 7 的兼容性对我的应用程序版本至关重要,因此更高的 Java 8 版本是不可能的)。

我的毕业文件:

apply plugin: 'java-library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    annotationProcessor 'com.google.auto.service:auto-service:1.0-rc2'
    implementation 'com.google.auto.service:auto-service:1.0-rc2'
    implementation 'android.arch.persistence.room:runtime:1.1.1'
    implementation 'com.squareup:javapoet:1.9.0'
}

sourceCompatibility = 1.7
targetCompatibility = 1.7


这不会破坏交易,但会让人分心和烦人。您是否知道这种行为的原因可能是什么?

4

1 回答 1

0

虽然我仍然不明白可能是什么原因,但一旦我将处理器模块作为项目包含在我的主应用程序模块中,错误就消失了,而不是作为 jar。
基本上,我改变了这一行:

annotationProcessor files('../migrationprocessor/build/libs/migrationprocessor.jar')

到这一行:

annotationProcessor project(':migrationprocessor')
于 2020-04-29T06:09:01.347 回答