aar 库的 java.lang.NoClassDefFoundError

问题描述 投票:0回答:1

我按照官方说明添加 AAR 作为依赖项。 应用程序的build.gradle有:

implementation files('libs/androidLibrary-release.aar')

应用程序构建并启动正常。但是,当它使用 logcat 中包含以下内容的库方法时,它会崩溃:

        java.lang.NoClassDefFoundError: Failed resolution of: Lorg/joda/time/DateTime;
            at net.mydomain.android.utility.getCurrentTime(SourceFile:1)
...
    Caused by: java.lang.ClassNotFoundException: Didn't find class "org.joda.time.DateTime" on path: DexPathList[[zip file "/data/app/com.mydomain.foo-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    ...
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

方法 getCurrentTime() 使用 joda-time。 在其build.gradle中包含以下内容:

implementation 'joda-time:joda-time:2.10.5'

我也尝试了如下api,但没有成功:

api 'joda-time:joda-time:2.10.5'

有人可以提供提示来帮助找到罪魁祸首吗?

我曾经将 aar 库作为模块导入,它们工作得完美无缺。我刚刚将 Android Studio 更新为 Arctic Fox,导入 aar 库的选项不再可用。

android android-library
1个回答
0
投票

对我来说,解决办法就是改变

compileOnly files('libs/mylibrary.aar') 

在 gradle 中

implementation files('libs/mylibrary.aar')

错误消失了。

© www.soinside.com 2019 - 2024. All rights reserved.