Unable to find method'java.lang.String com.squareup.javapoet.ClassName.canonical

69 阅读1分钟

1. 报错图片如下

99a418c7f6a9763819f0a565a4034109.png

2.解决方案

在项目级别build.gradle.kt中加入如下代码,重点是 apply false cd541f7d-adf7-40b4-af95-f4fc4abd8bfa.png

解释一下:libs.plugins.hit我在libs.version.toml中已经配置

ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }

3.问题原因

简单来说,就是Hilt 插件依赖的底层库(JavaPoet)和你项目中其他地方引用的(或者 Gradle 环境中存在的)版本不一致,导致 Hilt 试图调用一个“旧版本”中不存在的方法,没去调用Hilt本身自带的JavaPoet,从而报错。

4. 拓展

JavaPoet 是什么? 它是 Square 公司出的一个用来自动生成 Java 代码的库。Hilt (Dagger) 和 KSP 在编译时都需要大量生成代码,所以它们都强依赖这个库。