我正在使用gradlew(4.10.2)+ dagger(2.18)面对一个奇怪的问题。
问题是当我打电话:
./gradlew :app:compileDebugAndroidTestKotlin
构建失败并显示:
任务:Common:compileDebugJavaWithJavac FAILED
/CommonModule_ProvidesGsonFactory.java:6:错误:包javax.annotation.processing不存在 导入javax.annotation.processing。已生成;
/CommonModule_ProvidesGsonFactory.java:8:错误:找不到符号 @ 生成(
但是,如果我运行任务from Android Studio,则任务成功,并且在匕首生成的类中没有@Generated
。
您是否有避免使用@Generated
的{{1}}注释的线索?
答案 0 :(得分:7)
当我将 Android Studio 更新到 4.2 时遇到了这个问题
当我将 Kotlin 版本从 1.3.51 升级到 1.4.31
时问题解决了这个问题似乎已经被报告并解决了:
答案 1 :(得分:4)
Dagger使用auto-common
的{{1}}找出要使用的GeneratedAnnotations
注释。它是基于类路径来完成的。
这意味着在注释处理器运行时,@Generated
可用并在生成器中使用,但是当生成的文件在另一个任务中编译时,它不再位于类路径上。
可能的原因可能是代码是使用较新版本的JDK生成的,并且增量生成无效,需要完整的“清理并重建”,或者注释语言在Java 9上运行的Java语言级别存在问题+,但android被编译为Java 8或更低版本。
答案 2 :(得分:1)
如果你有:
<块引用>javax注解不存在
我的 macOS 上有这个问题 出现这个错误是因为你的jdk高于1.8
只需在应用的 build.gradle 中添加以下代码即可。
//Resolve jdk8+ Generation Annotations - javax annotation does not exist
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
答案 3 :(得分:0)
更改为嵌入Android Studio版本,仅进行清理!(不重建)改进@kiskae保护
答案 4 :(得分:0)
在尝试使用 Gradle 构建项目时,我在 Android Studio 中也收到了“package javax.annotation.processing does not exist import javax.annotation.processing.Generated”。 由于某些原因,我无法升级项目中的任何依赖项。在这种情况下,什么对我有用:
我的情况是,在一些更新之后,这个位置默认设置为不包含任何 jdk 的嵌入式 JDK,作为 Android 的新手,我花了几个小时试图找出我的 Java 8 出了什么问题.