gpt4 book ai didi

java - @Generated 注解使用 gradlew + dagger

转载 作者:IT老高 更新时间:2023-10-28 13:45:17 26 4
gpt4 key购买 nike

我在使用 gradlew(4.10.2) + dagger(2.18) 时遇到了一个奇怪的问题。

问题是当我打电话时:

./gradlew :app:compileDebugAndroidTestKotlin 

构建失败:

Task :Common:compileDebugJavaWithJavac FAILED

/CommonModule_ProvidesGsonFactory.java:6: error: package javax.annotation.processing does not exist import javax.annotation.processing.Generated;

/CommonModule_ProvidesGsonFactory.java:8: error: cannot find symbol @Generated(

但如果我运行任务 from Android Studio ,任务成功并且 @Generated 出现在 Dagger 生成的类中。

你有什么线索可以避免使用 ./gradlew@Generated 注释吗?

最佳答案

Dagger 使用auto-commonGeneratedAnnotations找出哪个@Generated要使用的注释。它基于类路径执行此操作。

这意味着当注释处理器运行时,javax.annotation.processing.Generated在生成器中可用并使用,但是当生成的文件在另一个任务中编译时,它不再位于类路径中。

可能的原因可能是代码是使用较新版本的 JDK 生成的,并且增量构建无效,需要完全“清理和重建”,或者注释处理器在 Java 9 上运行的 Java 语言级别存在问题+,但 android 编译为 Java 8 或更低版本。

使用 ./gradlew compileDebugAndroidTestKotlin -Dorg.gradle.java.home=<Android studio jre path>解决了问题。

关于java - @Generated 注解使用 gradlew + dagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com