升级RTC引擎及UI至2.9版本后出现NoClassDefFoundError错误的解决方法咨询
Hey,我之前也碰到过一模一样的问题!这个java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/enums/EnumEntriesKt;报错,大概率是Kotlin版本不兼容搞出来的麻烦——EnumEntriesKt是Kotlin 1.4及以上版本才新增的API,要是你的项目里用的Kotlin版本低于这个门槛,就会出现找不到这个类的情况。
给你几个亲测有效的解决步骤:
检查并升级Kotlin版本:
打开项目根目录下的build.gradle(或者build.gradle.kts)文件,找到Kotlin版本的配置项,把它升级到1.4.30及以上的稳定版本就行。举个例子:buildscript { ext.kotlin_version = "1.4.30" // 其他配置内容... }要是你用的是KTS脚本,就改成这样:
buildscript { val kotlinVersion by extra("1.4.30") // 其他配置内容... }同步依赖并清理重建项目:
改完版本后,记得点Android Studio里的「Sync Now」同步依赖,然后依次执行「Clean Project」和「Rebuild Project」,把旧的编译缓存清干净,确保新的Kotlin版本能生效。确认RTC组件的Kotlin版本要求:
有些RTC SDK的UI组件会明确标注所需的最低Kotlin版本,你可以去查一下2.9版本的官方说明,确保你的项目版本和它的要求匹配。要是SDK要求更高的版本,就直接升级到指定的版本就行。排除依赖冲突(如果存在):
要是项目里其他依赖引入了低版本的Kotlin库,可能会和RTC组件的依赖冲突。你可以在终端运行./gradlew app:dependencies查看完整的依赖树,找到冲突的Kotlin模块,然后在RTC UI组件的依赖声明里排除掉低版本的部分,比如:implementation('com.example:rtc-ui:2.9') { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib' }
备注:内容来源于stack exchange,提问作者 AstralWanderer




