uni-app 云打包出现 java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScopeK
uni-app 云打包出现 java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScopeK
信息类别 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | 11.7.9 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.95 |
手机系统 | Android |
手机系统版本 | Android 13 |
手机厂商 | vivo |
手机机型 | iqoo11 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
操作步骤:
- 使用implementation “org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1”
预期结果:
- 能够正常运行
实际结果:
2023-12-16 18:45:47.580 22748-22780/? E/weex: callModuleMethod >>> invoke module:XdModule, method:start failed. java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.taobao.weex.bridge.MethodInvoker.invoke(MethodInvoker.java:46)
at com.taobao.weex.bridge.NativeInvokeHelper.invoke(NativeInvokeHelper.java:87)
at com.taobao.weex.bridge.WXModuleManager.dispatchCallModuleMethod(WXModuleManager.java:249)
at com.taobao.weex.bridge.WXModuleManager.callModuleMethod(WXModuleManager.java:230)
at com.taobao.weex.bridge.WXBridgeManager.callModuleMethod(WXBridgeManager.java:527)
at com.taobao.weex.bridge.WXBridgeManager.callNativeModule(WXBridgeManager.java:709)
at com.taobao.weex.bridge.WXBridge.callNativeModule(WXBridge.java:408)
at com.taobao.weex.base.SystemMessageHandler.nativeRunWork(Native Method)
at com.taobao.weex.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:104)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:223)
at android.os.Looper.loop(Looper.java:324)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/CoroutineScopeKt
at com.xdwalker.xdlocation.Location.<init>(Location.kt:56)
at com.xdwalker.xdlocation.XdModule.start(XdModule.kt:99)
at java.lang.reflect.Method.invoke(Native Method)
at com.taobao.weex.bridge.MethodInvoker.invoke(MethodInvoker.java:46)
at com.taobao.weex.bridge.NativeInvokeHelper.invoke(NativeInvokeHelper.java:87)
at com.taobao.weex.bridge.WXModuleManager.dispatchCallModuleMethod(WXModuleManager.java:249)
at com.taobao.weex.bridge.WXModuleManager.callModuleMethod(WXModuleManager.java:230)
at com.taobao.weex.bridge.WXBridgeManager.callModuleMethod(WXBridgeManager.java:527)
at com.taobao.weex.bridge.WXBridgeManager.callNativeModule(WXBridgeManager.java:709)
at com.taobao.weex.bridge.WXBridge.callNativeModule(WXBridge.java:408)
at com.taobao.weex.base.SystemMessageHandler.nativeRunWork(Native Method)
at com.taobao.weex.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:104)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:223)
at android.os.Looper.loop(Looper.java:324)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScopeKt
at com.xdwalker.xdlocation.Location.<init>(Location.kt:56)
at com.xdwalker.xdlocation.XdModule.start(XdModule.kt:99)
at java.lang.reflect.Method.invoke(Native Method)
at com.taobao.weex.bridge.MethodInvoker.invoke(MethodInvoker.java:46)
at com.taobao.weex.bridge.NativeInvokeHelper.invoke(NativeInvokeHelper.java:87)
at com.taobao.weex.bridge.WXModuleManager.dispatchCallModuleMethod(WXModuleManager.java:249)
at com.taobao.weex.bridge.WXModuleManager.callModuleMethod(WXModuleManager.java:230)
at com.taobao.weex.bridge.WXBridgeManager.callModuleMethod(WXBridgeManager.java:527)
at com.taobao.weex.bridge.WXBridgeManager.callNativeModule(WXBridgeManager.java:709)
at com.taobao.weex.bridge.WXBridge.callNativeModule(WXBridge.java:408)
at com.taobao.weex.base.SystemMessageHandler.nativeRunWork(Native Method)
at com.taobao.weex.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:104)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:223)
at android.os.Looper.loop(Looper.java:324)
at android.os.HandlerThread.run(HandlerThread.java:67)
bug描述:
uniapp集成了原生本地安卓插件,自定义基座可以正常运行,云打包运行后报错 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/CoroutineScopeKt 没有使用混淆 implementation “org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1”
在 uni-app 云打包过程中出现 java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScopeK
错误,通常是因为项目中依赖的 Kotlin 协程库缺失或未正确配置。以下是一些可能的解决方案:
1. 检查 Kotlin 协程库依赖
在 build.gradle
文件中,确保已正确添加 Kotlin 协程库的依赖。例如:
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
}
如果你使用的是 Kotlin 版本较新,可以尝试更新协程库到最新版本。
2. 检查 Kotlin 版本
确保项目中使用的 Kotlin 版本与协程库版本兼容。例如:
buildscript {
ext.kotlin_version = '1.7.20' // 使用合适的 Kotlin 版本
repositories {
google()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
3. 清理和重建项目
有时候,Gradle 缓存可能导致依赖问题。尝试清理项目并重新构建:
./gradlew clean
./gradlew build
或者在 Android Studio 中点击 Build
-> Clean Project
,然后重新打包。
4. 检查 uni-app 插件
如果你使用了 uni-app 插件(如原生插件或第三方 SDK),确保这些插件也正确配置了 Kotlin 和协程库的依赖。
5. 检查云打包配置
如果是云打包时出现问题,检查云打包的配置文件中是否包含了 Kotlin 协程库的依赖。可以在 manifest.json
或 package.json
中检查相关配置。
6. 手动添加缺失的库
如果问题仍然存在,尝试手动将 kotlinx-coroutines-core
和 kotlinx-coroutines-android
的 JAR 文件添加到项目的 libs
目录中,并在 build.gradle
中引用:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}