当前位置: 首页 > 知识库问答 >
问题:

错误:错误。多模块Dagger项目中不存在类Kotlin

司寇嘉茂
2023-03-14

我正在使用Dagger 2和静态编程语言进行Android开发。我的项目也是一个多模块项目。我的settings.gradle文件是这样的:

include :app
include :lib

我还在维护lib模块。

在Dagger文件中(例如在组件中),我尝试从其他模块获取项目。例如:

@Component
interface AppComponent{
    fun getPresenter() : Presenter
}

Presenter对象在lib模块中定义。我在linux环境中工作,我正在使用Android Studio 3预览canary 5。代码运行良好,我能够生成APK。

但是我的公司想使用稳定版的Android Studio生成APK。我正在使用Android Studio 2.3.3。

编译Android项目时,我遇到了这个错误:

error: error.NonExistentClass

出现错误时

:app:kaptDebugKotlin 

执行并导致找不到匕首类,该类在其他项目中定义。对此有什么可能的解决方法?抱歉我的英语不好。

共有3个答案

阎俊英
2023-03-14

在使用Dagger的多模块项目中,我遇到了一个非常类似的情况,出现了一个不存在类的错误,结果我忘记添加kotlin库依赖项。因此,只需将其添加到子模块中就解决了我的问题:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$rootProject.kotlinVersion"
郭兴平
2023-03-14

基本上,在使用kapt时,没有什么可以解决这个问题的。引用这个在另一个使用预处理器的库(OrmaDatabase)中解决相同问题的链接:

因为静态编程语言在Java注释处理运行之前制作了它的存根,静态编程语言对OrmaDatabase一无所知,存根中的声明名称将是错误的。nonExistentClass。这打破了注释处理工具。这是一种kapt限制

只需使用普通的apt或注释处理器来运行Dagger编译器。我一换衣服:

kapt libs.daggerCompiler

annotationProcessor libs.daggerCompiler

在我的模块级构建中。gradle文件,我能够得到错误。修复错误后,必须将该行恢复为kapt,否则将不会生成dagger类,因为它们是在Kotlin中定义的。

蒋高杰
2023-03-14

只需将其添加到构建gradle文件中,即可避免与不存在的类相关的问题

kapt {
    correctErrorTypes true 
} 

https://kotlinlang.org/docs/reference/kapt.html#non-existent-type-correction

 类似资料:
  • 我需要通过Bintray将我的库(多模块项目)上传到sonatype存储库中。所以我需要为每个模块分别生成Javadoc。 首先,我面对这些类似问题中的问题 Android Studio Javadoc:找不到符号 Gradle Javadoc失败,"错误:包...不存在" 根据第一个问题中的解决方案,我可以解析我从第三方库(Refught2,gson)使用的类和注释错误。 但是在我的例子中,我的

  • 得到如下错误: Jenkins编译错误 [javac] /var/lib/jenkins/workspace/CWL_Smoke_New/SeleniumFW/CWL_NewSuite/src/com/collegeweeklive/common/AppLibrary.java:14:错误:包org.apache.commons.lang3不存在 [javac]导入org.apache.commo

  • 我目前正在使用一个具有良好覆盖范围的渐变多模块java项目和带有sonarJava插件的声纳库6.2 4.10.0.1026。我正在使用Gradle 4.0.1,声纳库插件2.5和哈科0.7.9!代码是爪哇 8。 由于 API 驱动的开发,API 测试在 API 项目中编写为抽象测试,并从为测试提供构造函数的实现项目中调用。 在sonarqube服务器上分析projekt时,正确测量了实施项目的覆

  • 问题内容: 当我尝试编译代码时,我一直收到此错误。我的目录中有pom.xml文件,但是不确定其中是否存在错误。我在互联网上只找到一个与此有关的链接,而事实并非如此:模块需要Maven项目配置 错误:Maven资源编译器:模块’updater’所需的Maven项目配置不可用。仅当从IDE启动外部构建时,才支持Maven项目的编译。 这是我的pom文件的内容: 我将衷心感谢您的帮助。谢谢! 问题答案:

  • 在此处输入图像描述 WEB内容: 在此处输入图像描述 我不知道这个项目有什么问题,我发誓在我来这里问这个问题之前,我真的试图搜索结果。希望你们帮帮我,谢谢!

  • 我正试图在我的项目中使用Dagger2,但安装后我出现了一个错误: 有我的模块和组件文件: 我使用以下依赖关系: 还有,我有这个错误: