错误描述
在一个测试工程中引入room框架调试数据库,遇到了如下错误:
e: [kapt] An exception occurred: java.lang.NoSuchMethodError: kotlin.jvm.internal.FunctionReferenceImpl.<init>(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
at androidx.room.log.RLog$CollectingMessager$writeTo$printMessage$1.<init>(RLog.kt)
at androidx.room.log.RLog$CollectingMessager.writeTo(RLog.kt:92)
at androidx.room.processor.QueryMethodProcessor.process(QueryMethodProcessor.kt:92)
at androidx.room.processor.DaoProcessor.process(DaoProcessor.kt:99)
at androidx.room.processor.DatabaseProcessor.doProcess(DatabaseProcessor.kt:100)
at androidx.room.processor.DatabaseProcessor.process(DatabaseProcessor.kt:51)
at androidx.room.DatabaseProcessingStep.process(DatabaseProcessingStep.kt:47)
at androidx.room.compiler.processing.JavacProcessingStepDelegate.process(XProcessingStep.kt:111)
问题分析
遇到这个问题后,我和自己写的另一个有引入room的工程进行了比对,在build.gradle文件引入语句上没有发现有什么问题。
在这种情况下,我想到了有可能是引入包版本问题,于是对比了两个工程版本之后,当前出现了问题的工程kotlin gradle版本为1.3.50,而另外一个工程的版本是1.4.0。
在网络查询资料,有遇到同样类型问题的文章:
https://blog.csdn.net/weixin_43172472/article/details/116743504
问题解决
尝试同步版本为1.4.0之后,重新编译运行,问题已解决。
网友评论