如何解决此错误:由java.lang.IllegalArgumentException引起:com.example.My



我在构建Kotlin/Android应用程序时遇到此错误?

Caused by: java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.GeneratedMethodAccessor812.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:31)
at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
... 30 more
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.IllegalArgumentException: com.example.MyClassName does not represent a declared type
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:992)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:896)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1222)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1335)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
... 35 more
Caused by: java.lang.IllegalArgumentException: com.example.MyClassName does not represent a declared type
at dagger.shaded.auto.common.MoreTypes$CastingTypeVisitor.defaultAction(MoreTypes.java:948)
at dagger.shaded.auto.common.MoreTypes$CastingTypeVisitor.defaultAction(MoreTypes.java:939)
at jdk.compiler/com.sun.tools.javac.code.Type$ErrorType.accept(Type.java:2394)
at dagger.shaded.auto.common.MoreTypes.asDeclared(MoreTypes.java:579)
at dagger.internal.codegen.base.Keys$1.visitDeclared(Keys.java:89)
at dagger.internal.codegen.base.Keys$1.visitDeclared(Keys.java:66)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:1151)
at dagger.internal.codegen.base.Keys.isValidImplicitProvisionKey(Keys.java:65)
at dagger.internal.codegen.base.Keys.isValidImplicitProvisionKey(Keys.java:50)

我使用dagger2进行依赖注入,在我的应用程序中,应用程序使用一个依赖于另一个模块的模块。解决这种依赖关系的正确方法应该是什么?

您需要对正在使用的模块进行实现依赖,但最近的构建标志enableAggregatingTask会自动执行此操作。

根据谷歌/dagger#2123,bcorso在2020年11月回应Kshitij09:

你的意思是,我要么应用程序应该对:libraryB有直接依赖(添加实现(,要么:libraryA对:library B有api依赖,对吧?

Hi@Kshitij09,是的,这是当前的解决方案,我们正在寻找改进的方法(见#1991(评论((

在同一线程中,bcorso将于2021年9月更新:

如果您使用Hilt(带Gradle(,解决方案是使用Hilt-Gradle插件,然后在build.gradle模块中启用aggregating task

hilt {
enableAggregatingTask = true
}

enableAggregatingTask构建配置于2021年6月在Dagger 2.37中引入,并于2021年10月在Dager 2.40中默认启用。

最新更新