记录编译报错的解决经历
- 本项目依赖版本由父项目指定,在一次父项目更新代码后,本项目刷新依赖报错提示:
> Task :xxx-core:kaptGenerateStubsKotlin
e: Could not load module <Error module>
> Task xxx-core:kaptGenerateStubsKotlin FAILED
62 actionable tasks: 18 executed, 44 up-to-date
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':xxx-core:kaptGenerateStubsKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
> Compilation error. See log for more details
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 15s
16:47:38: Execution finished ':xxx-app:classes'.
- 查找报错信息
- 尝试加上
Run with --stacktrace
或者其他参数运行,仍然无法定位报错代码或者某个依赖问题。 - 网上搜索无对于解决方案
- idea代码没有红线提示
- 定位问题
回忆报错时间,拉取父项目,查找时间点附近变动的依赖版本号代码,从正常代码逐级修改版本号,至报错为止。
这个过程比较耗时,不过最终定位了使用某个升级版本的依赖,会使项目出现编译错误
但是从maven仓库可以查询到此依赖,排除依赖源问题,
遂查询本地使用该依赖的代码,当点击类后,发现旧 import 引入依赖类的路径已经不能使用,这时IDEA才出现提示,同时包结构逐级出现红线。
最后,按升级后的依赖配置,修改本项目对应代码。编译成功!
总结
本项目为:Gradle + Kotlin ,当某个依赖版本升级后,出现kaptGenerateStubsKotlin
错误,但是IDEA没有给出变红提示,可能是由于旧的依赖还处于IDEA缓存中(个人理解),所以过时的import导入类代码不能被提示出来,但是当你点进类,IDEA才识别并报错。
所以当编译出错,没有明确提示时,先找到版本发生变化的依赖,再定位项目中使用了这些依赖的代码,看看那些代码是否已经报错。