uni-app 云打包出现 java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScopeK

发布于 1周前 作者 yuanlaile 来自 Uni-App

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”


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.jsonpackage.json 中检查相关配置。


6. 手动添加缺失的库

如果问题仍然存在,尝试手动将 kotlinx-coroutines-corekotlinx-coroutines-android 的 JAR 文件添加到项目的 libs 目录中,并在 build.gradle 中引用:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!