NonExistentClass无法转换为Annotation

问题描述 投票:1回答:1

我在我的项目中添加了一个新的Retrofit接口,其中包含一些使用@GET@HEADERS注释注释的端点,在使用所述类的构造函数中的@Inject注释将所述接口注入存储库类之后,Android Studio抛出此错误:

NonExistentClass cannot be converted to Annotation

在查看生成的Java代码之后,它将@GET@HEADERS注释替换为:

@error.NonExistentClass()

我已经尝试过以下方法:

  • 使用annotatioProcessor而不是kapt
  • jetifier.enabledfalse设置为gradle.properties
  • 在我的generateStubs文件中将true设置为build.gradle
  • 在我的correctErrorTypes文件中将true设置为build.gradle

我正在使用:

  • Android Studio 3.3
  • Kotlin 1.3.11
  • 匕首2.21
  • 改造2.3.0
  • 科特林
  • 队长

可能是一些匕首范围问题?或Retrofit / dagger与Kapt插件的新版本不完全兼容?

android retrofit2 dagger-2 kapt
1个回答
1
投票

幸运的是,这个问题让我想出了我的问题。在将应用程序模块中的类移动到库中时,我引用的是仅存在于调试文件夹中的注释类。所以调试版本很好,但是在生成版本文件时调用gradlew install失败了。

我的错误是非常明确的,虽然我花了很长时间才意识到 - 生成的文件实际上用@error.NonExistentClass()替换了缺失的注释

将文件移动到主src集意味着调试版和发布版都可以看到该类。我花了一段时间才弄明白的是,我认为这是一个被kapt掩盖的Dagger问题,但实际上这只是一个普通的老Dagger问题。我的建议是仔细查看你的Dagger设置。

© www.soinside.com 2019 - 2024. All rights reserved.