Android Studio 显示 JavaPoet 库的非常具体的不正确错误
Android studio shows very specific incorrect errors with JavaPoet library
我使用 JavaPoet 库编写了注释处理器,并将其作为 Java 库模块包含在我的项目中。它编译并工作正常。问题是 - Android Studio 内联编译器向我显示了不应该出现的错误。
- 出于某种原因,它无法识别参数中的省略号
- 同上
- 它表明没有将 Filer 类型作为参数的 writeTo 方法,即使当您选择 Go To > Declaration 选项时显然有一个方法。正如我提到的 - 它编译得很好。
我已经试过了:
- 清理和重建项目 - 没用
- 同步 gradle 几次 - 没用
- 正在刷新 gradle 项目 - 没用
- 使用文件 > 使 Cache/Restart 选项无效 - 没用
- 删除 .gradle 和 .idea 文件夹并再次同步 - 没用
- 从项目和磁盘中删除我的 Java 库模块并使用相同的 类 重新创建它 - 也没有用
总是一样的三个错误,所以我很茫然。我必须提到 这个问题发生在我将 JavaPoet 版本从 1.12.1 降级到 1.9.0(Java 7 兼容性对我的应用版本,那么高 Java 8 个版本是不可能的)。
我的 gradle 文件:
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
这不是一个交易破坏者,但它会让人分心和烦人。您是否知道造成这种行为的原因是什么?
虽然我仍然不明白可能是什么原因,但一旦我将处理器模块作为项目包含在我的主应用程序模块中,而不是作为一个项目,错误就消失了罐子。
基本上,我更改了这一行:
annotationProcessor files('../migrationprocessor/build/libs/migrationprocessor.jar')
到这一行:
annotationProcessor project(':migrationprocessor')
我使用 JavaPoet 库编写了注释处理器,并将其作为 Java 库模块包含在我的项目中。它编译并工作正常。问题是 - Android Studio 内联编译器向我显示了不应该出现的错误。
- 出于某种原因,它无法识别参数中的省略号
- 同上
- 它表明没有将 Filer 类型作为参数的 writeTo 方法,即使当您选择 Go To > Declaration 选项时显然有一个方法。正如我提到的 - 它编译得很好。
我已经试过了:
- 清理和重建项目 - 没用
- 同步 gradle 几次 - 没用
- 正在刷新 gradle 项目 - 没用
- 使用文件 > 使 Cache/Restart 选项无效 - 没用
- 删除 .gradle 和 .idea 文件夹并再次同步 - 没用
- 从项目和磁盘中删除我的 Java 库模块并使用相同的 类 重新创建它 - 也没有用
总是一样的三个错误,所以我很茫然。我必须提到 这个问题发生在我将 JavaPoet 版本从 1.12.1 降级到 1.9.0(Java 7 兼容性对我的应用版本,那么高 Java 8 个版本是不可能的)。
我的 gradle 文件:
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
这不是一个交易破坏者,但它会让人分心和烦人。您是否知道造成这种行为的原因是什么?
虽然我仍然不明白可能是什么原因,但一旦我将处理器模块作为项目包含在我的主应用程序模块中,而不是作为一个项目,错误就消失了罐子。
基本上,我更改了这一行:
annotationProcessor files('../migrationprocessor/build/libs/migrationprocessor.jar')
到这一行:
annotationProcessor project(':migrationprocessor')