使用Room数据库构建项目出现java.lang.NoClassDefFoundError报错如何解决
报错信息
Caused by: java.lang.NoClassDefFoundError: androidx/room/compiler/processing/XProcessingStep at androidx.room.RoomProcessor.initSteps(RoomProcessor.kt:43) at com.google.auto.common.BasicAnnotationProcessor.init(BasicAnnotationProcessor.java:118) at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.init(incrementalProcessors.kt:38) at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.init(annotationProcessing.kt:156) at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:500) at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:597) at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:690) at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91) at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035) at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1068) at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:79) ... 27 more Caused by: java.lang.ClassNotFoundException: androidx.room.compiler.processing.XProcessingStep ... 40 more
问题根因
这个错误是Room注解处理器运行时找不到核心处理类XProcessingStep导致的,核心诱因都是依赖版本不匹配:
- 所有Room相关依赖的版本不一致,比如核心库用了2.6.1,但是编译器用了2.4.0
- Kotlin版本、Android Gradle Plugin(AGP)版本和Room版本不兼容,高版本Room对构建环境的版本有最低要求
- 项目内其他注解处理依赖(比如Hilt、AutoService)和Room的依赖冲突,覆盖了Room需要的XProcessing相关类
- 构建缓存异常,导致类文件丢失
解决步骤
- 统一所有Room相关依赖的版本,Kotlin项目必须用
kapt引入Room编译器依赖,不能用annotationProcessor,示例配置如下:// 模块级build.gradle dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" } - 匹配构建环境版本和Room版本要求:
- Room 2.5.x及以上版本要求AGP >= 7.2.0,Kotlin >= 1.7.0
- Room 2.6.x及以上版本要求AGP >= 7.4.0,Kotlin >= 1.8.0
根据你使用的Room版本升级对应AGP和Kotlin版本即可
- 排查其他注解依赖冲突,如果项目引入了Hilt,需要保证Hilt版本和Room版本适配,比如Hilt 2.44+对应Kotlin 1.8+,和Room 2.6.x兼容
- 清理缓存后重建项目:依次执行Build -> Clean Project,File -> Invalidate Caches / Restart,之后重新触发构建
内容的提问来源于stack exchange,提问作者Abderrahim Baallal
相关产品推荐
相关产品推荐

