当前位置: 首页 > 知识库问答 >
问题:

java.lang.NoClassDefoundError:未能解析:logg/apache/commons/logging/logFactory

白君之
2023-03-14

我们已经提出了类似的问题。但这一款似乎比之前的更复杂,因为Android平台兼容性的变化。

08-16 13:20:53.146 9630-9630/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: me.project.android.dev, PID: 9630
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory;
        at com.amazonaws.util.VersionInfoUtils.<clinit>(VersionInfoUtils.java:41)
        at com.amazonaws.util.VersionInfoUtils.c(VersionInfoUtils.java:77)
        at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:43)
        //project specific class reference removed
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.logging.LogFactory" on path: DexPathList[[zip file "/data/app/me.project.android.dev-0SPRJnc8-4voauRU7Y20zQ==/base.apk"],nativeLibraryDirectories=[/data/app/me.project.android.dev-0SPRJnc8-4voauRU7Y20zQ==/lib/arm64, /data/app/me.project.android.dev-0SPRJnc8-4voauRU7Y20zQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.amazonaws.util.VersionInfoUtils.<clinit>(VersionInfoUtils.java:41) 
        at com.amazonaws.util.VersionInfoUtils.c(VersionInfoUtils.java:77) 
        at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:43) 
        //project specific class reference removed
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
implementation "commons-logging:commons-logging:1.2"

添加这种依赖使应用程序在像素和像素中工作,但它在所有其他设备中崩溃,例外情况如下

org.apache.commons.logging.impl.LogFactoryImpl does not extend or implement org.apache.commons.logging.LogFactory

我已经试过在ProGuard做所有的改变了。这是我的proguard配置

-keep class org.apache.commons.logging.impl.LogFactoryImpl
-keep class org.apache.commons.logging.LogFactory
-keepnames class org.apache.commons.logging.impl.* {*;}
-keepnames class org.apache.commons.logging.*
-keepclassmembers class org.apache.commons.logging.impl.* {*;}
-keepclassmembers class org.apache.commons.logging.*
-keepnames interface org.apache.commons.logging.impl.* {*;}
-keepnames interface org.apache.commons.logging.*

仍然导致坠机。

共有1个答案

东门越
2023-03-14

这是一个AWS SDK bug,似乎在SDK的2.6.30版本中得到了解决:

修正了使用Apache Commons Logging获取记录器会在Android9.0(Pie/API级别28)时崩溃的错误。参见拉杆#521。现在,如果Apache Commons Logging是作为依赖项添加的,将使用它,否则将使用android.util.log。

 类似资料:
  • 问题内容: 我是 JasperReports的 新手,我想将 JasperReports 集成到我的Java程序中,因此,当我单击“打印”按钮时,程序将显示报告。但是,当我单击按钮时,出现 NoClassDefFoundError 。 码 运行时错误 问题答案: 您已经错过了jar文件“ org-apache-commons-logging.jar”。将此jar加载到您的项目中。该问题将得到解决。

  • 我得到下一个错误: 我几乎可以肯定问题出在库导入上,但我不确定也不知道如何修复它。

  • Apache Commons Logging (原名 Jakarta Commons Logging,JCL)提供的是一个 Java 的日志接口,同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Ava

  • 我在使用Android Studio构建应用程序时遇到了这个错误。APK已经编译好了,但是当我尝试在Android P模拟器上运行该应用程序时,它会崩溃并抛出以下错误。详情请参阅附件: 这是我的建筑.等级档案。如果有人对问题可能是什么提出建议,我将不胜感激。多谢。

  • 我在运行代码时遇到以下异常: 线程“main”java.lang.noClassDeffounderror:org/apache/spark/logging在java.lang.ClassLoader.DefineClass1(Native Method),在java.security.secureClassLoader.DefineClass1(classLoader.java:760),在ja

  • 我正在做一个非常简单的第三方库概念验证(在本例中,是solrj)。 虽然我使用maven作为构建系统,但我得到了错误 java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory solrj(4.10.4)没有将其定义为依赖项。 因此,我现在可以手动添加commons日志作为maven依赖项,但我不确定要添加哪一个: commons-log