在 Android Java 应用程序中使用 Kotlin AAR 时出现 java.lang.NoClassDefFoundError

2024-01-10

我必须在 Kotlin 中创建一个库(aar),并且必须在使用 Java 制作的 Android 应用程序中使用它。 Kotlin 库有一个带有伴随函数的类,可以在 Java 应用程序中静态使用。当我在 Java 的 Android 应用程序中使用该静态方法时,我确实收到“ClassNotFoundException”。任何人都可以帮助我如何在 Android Java 应用程序中使用 aar 中的配套方法。请找到我的代码片段和运行我的应用程序时遇到的异常。 仅当在 Android Java 项目中使用 Kotlin AAR 时,我才会收到此错误,但在 Android Kotlin 项目中则不会。 Kotlin 库或 Android Java 项目中是否缺少某些内容? Kotlin 库片段:

class LogUtil {
    companion object {
        private const val LOG_TAG = "KOTLIN_LIBRARY"
        @JvmStatic
        fun log(message: String) {
            Log.i(LOG_TAG, message)
        }
    }
}

Android 活动片段:

public class MainActivity extends AppCompatActivity {

    private HaloSDK haloSDK;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testKotlinSDK();
    }


    private void testKotlinSDK() {
        LogUtil.log("Hello");
    }

    public void showKotlinWebView(View view) {
        Intent intent = HaloWebActivity.Companion.createIntent(this, "www.abc.com");
        startActivity(intent);
    }
}

例外:

java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics;
        at com.abcd.kotlinlibrary.utils.LogUtil$Companion.log(Unknown Source:2)
        at com.abcd.kotlinlibrary.utils.LogUtil.log(Unknown Source:2)
        at com.abcd.thirdpartyapp.MainActivity.testKotlinSDK(MainActivity.java:25)
        at com.abcd.thirdpartyapp.MainActivity.onCreate(MainActivity.java:20)
        at android.app.Activity.performCreate(Activity.java:7174)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6940)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlin.jvm.internal.Intrinsics" on path: DexPathList[[zip file "/data/app/com.abcd.thirdpartyapp-k2I71L3n7Qa6TEETe1GejQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.abcd.thirdpartyapp-k2I71L3n7Qa6TEETe1GejQ==/lib/arm64, /system/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.abcd.kotlinlibrary.utils.LogUtil$Companion.log(Unknown Source:2) 
        at com.abcd.kotlinlibrary.utils.LogUtil.log(Unknown Source:2) 
        at com.abcd.thirdpartyapp.MainActivity.testKotlinSDK(MainActivity.java:25) 
        at com.abcd.thirdpartyapp.MainActivity.onCreate(MainActivity.java:20) 
        at android.app.Activity.performCreate(Activity.java:7174) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6940) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

缺失的类是Kotlin 标准库。如果不使用,则必须手动依赖它Kotlin在你的项目中:

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.50'

您还可以确保从库中导出依赖项:

api 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.50'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android Java 应用程序中使用 Kotlin AAR 时出现 java.lang.NoClassDefFoundError 的相关文章

  • 如何让Android设备始终处于唤醒模式?

    设备root成功后 现在 我需要使设备始终处于唤醒状态 即始终可见 UI 并且没有黑屏或任何白日梦屏幕 为此 我认为我必须完成以下任务 无锁屏 已关闭 睡眠设置为 从不 白日梦设置为 关闭 我发现都是关于应用程序层的 即有一些应用程序可以完
  • 当选择模式为 MultiChoice Modal 时,如何防止激活某些 ListView 项目?

    我有一个由自定义 BaseAdapter 填充的自定义 GridView GridView的选择模式是MultiChoiceModal 我想控制长单击时可以激活哪些项目 同时仍然确保它们响应 短 单击事件 BaseAdapter有一个方法叫
  • 无法解析配置“:app:_debugCompile”的所有依赖项

    我正在尝试在我的 Android 应用程序上使用 Google 地图 我安装了 Google Play 服务并获取了 API 密钥 我不明白为什么我会收到此错误消息 我认为它抱怨以下内容
  • 带有真实颜色的图标显示黑色背景

    使用新主题 Theme MaterialComponents 在按钮上放置图标时会显示一个黑框 如何放置具有真实颜色的图标
  • Android - 打开 FB 本机应用程序时未找到处理 Intent 的 Activity

    我正在尝试从通知中收到的网址打开特定帖子上的 FB 应用程序 它在大多数设备上都能完美运行 但在三星 S7 上大多会崩溃 我的简单代码 String url fb post
  • Android Honeycomb 中的加载器

    我正在尝试弄清楚如何使用Loaders在 Android 3 0 中 但似乎无法让它工作 该文档仅描述使用CursorLoader但我正在使用AsyncTaskLoader 从文档看来你应该只需要实现AsyncTaskLoader load
  • 如何将 FAB 转换为弹出菜单?

    根据材料设计指南 https material google com components buttons floating action button html buttons floating action button transit
  • 上传图片不显示,但其他图片显示

    我遇到了一些奇怪的事情 我可以看到我正在上传的图像link http www justedhak comlu com images uploaded images jpg但它没有显示在应用程序中 但如果我输入另一张图片link http a
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • PhoneGap BarcodeScanner - ClassNotFound

    UPDATE 2 我发布了一个解决我原来问题的答案 看欲了解更多信息 https stackoverflow com a 9541490 398519 UPDATE供任何想知道的人参考 最后我发现了这个 http github com co
  • Android imageview 改变色调来模拟按钮点击

    我有一个图像视图 我在其中设置了从网址获取的位图 在 imageview 上 我设置了一个 onClickListener 来打开一个对话框 当按下图像视图时 我想以某种方式改变色调 使其更暗 以提供一种类似按钮点击的感觉 你有什么建议 h
  • Android 上的自定义视图和窗口属性

    我想要做的是在我的应用程序顶部添加一个视图 该视图类似于过滤器视图 我想操纵屏幕的颜色 并且我还希望能够同时更改屏幕的亮度时间 这两件事似乎是分开起作用的 但不能一起起作用 这是我的代码 添加视图 colourView new Layer
  • Android 模拟器问题

    当我启动模拟器时 我遇到很多问题 错误 HttpConnectionApp emulator 5554 disconnected Cancelling net paxcel http HttpConnectionApp activity l
  • 使用 Lint 和 SonarQube 分析 Android 项目

    我真的 溢出 了试图让这些东西一起工作 我按照这里的指示进行操作 http docs sonarqube org display PLUG Android Lint Plugin http docs sonarqube org displa
  • Android facebook api,获取不同尺寸的头像

    我正在使用相对较新的 Facebook 图形 api 我正在获取使用该应用程序的朋友列表及其个人资料照片 我不知道如何修改我发送的参数 以便返回的图片很大 当前返回的默认值很小 我正在使用 newMyFriendsRequest 我发送的参
  • Android:非键盘输入法

    我正在尝试为 Android 创建一个不是传统键盘 对应于不同字母的按键行 的 IME 并且我无法找到有关如何执行此操作的有用资源 因为 SDK 中的所有代码示例都使用键盘 API它是内置函数 我在 XML 文件中设计了 IME 界面 就好
  • Unity 上适用于 Android 的 vuforia 插件和 prime31 facebook 插件之间的冲突

    如今客户需要它 这真的很紧急 T T 我在 Unity 上的 Android 应用程序中同时安装了 vuforia 插件和 prime31 facebook 插件 难点在于androidmanifest xml文件 它们都充当 MAIN 和
  • 如何更改区域设置以使用拉丁塞尔维亚语(而不是西里尔塞尔维亚语)

    塞尔维亚语有拉丁字母和西里尔字母 在 Android 的日期和时间选择器小部件中 显示的塞尔维亚语言区域字母似乎是西里尔字母 如此处所示 我想更改区域设置 以便 Android 小部件使用拉丁塞尔维亚字母 当前的语言 国家代码 产生西里尔字
  • 如何获取 res.drawable 文件夹的路径来复制文件?

    我正在编写我的应用程序AndroidStudio 我的里面有gif文件drawable gifs文件夹 我希望将该文件复制到MediaStore Images Media单击按钮后的文件夹 目前 即使使用发布的一些答案 我也无法获取我的 g

随机推荐