Java 使用log4j记录器时发生NoClassDefFoundError

Java 使用log4j记录器时发生NoClassDefFoundError,java,android,logging,log4j,Java,Android,Logging,Log4j,我正在使用log4j将日志存储在android设备的文件中 以下是我的依赖项: compile 'de.mindpipe.android:android-logging-log4j:1.0.3' compile 'log4j:log4j:1.2.17' 以下是我的getLogger方法: public static Logger getLogger(Class clazz, String logType) { String logsFolderName; logsFolderN

我正在使用log4j将日志存储在android设备的文件中

以下是我的依赖项:

compile 'de.mindpipe.android:android-logging-log4j:1.0.3'
compile 'log4j:log4j:1.2.17'
以下是我的
getLogger
方法:

public static Logger getLogger(Class clazz, String logType) {
    String logsFolderName;
    logsFolderName = Environment.getExternalStorageDirectory().toString() + File.separator + PlayerProperties.logsFolder + File.separator;

    String logFilePrefix = PlayerProperties.androidId ;
    String logFileName = logFilePrefix + "_" + getCurrentDateString() + ".log";

    if (!(new File(logsFolderName).exists())) {
        new File(logsFolderName).mkdirs();
    }

    String absoluteFileName = new File(logsFolderName, logFileName).getAbsolutePath();
    logConfigurator.setFileName(absoluteFileName);
    logConfigurator.setRootLevel(Level.INFO);
    logConfigurator.setLevel("org.apache", Level.INFO);
    logConfigurator.setUseFileAppender(true);
    logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
    logConfigurator.setMaxFileSize(1024 * 1024 * 3); // each log file max size - 3 MB
    logConfigurator.setImmediateFlush(true);
    logConfigurator.configure();
    Logger log = Logger.getLogger(clazz);
    return log;
}
用法:

public static Logger LOGGER = ALogger.getLogger(StorageTools.class);
虽然这在迄今为止使用的所有android设备中都能很好地工作,但一个特定的android设备(版本4.4.2)引发了以下异常:

04-29 08:10:02.982 3880-3880/com.blynq.app.multipaneplayer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.blynq.app.multipaneplayer, PID: 3880
    java.lang.NoClassDefFoundError: org.apache.log4j.Logger
        at de.mindpipe.android.logging.log4j.LogConfigurator.setLevel(LogConfigurator.java:118)
        at com.blynq.app.tools.ALogger.getLogger(ALogger.java:49)
        at com.blynq.app.tools.ALogger.getLogger(ALogger.java:28)
        at com.blynq.app.tools.StorageTools.<clinit>(StorageTools.java:37)
        at com.blynq.app.multipaneplayer.MainPlayer.setPlayerDefaultConfiguration(MainPlayer.java:162)
        at com.blynq.app.multipaneplayer.MainPlayer.initiatePlayer(MainPlayer.java:99)
        at com.blynq.app.multipaneplayer.MainPlayer.onResume(MainPlayer.java:91)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1206)
        at android.app.Activity.performResume(Activity.java:5473)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
        at dalvik.system.NativeStart.main(Native Method)
04-29 08:10:02.982 3880-3880/com.blynq.app.multipaneplayer E/AndroidRuntime:致命异常:main
进程:com.blynq.app.multipaneplayer,PID:3880
java.lang.NoClassDefFoundError:org.apache.log4j.Logger
位于de.mindpipe.android.logging.log4j.LogConfigurator.setLevel(LogConfigurator.java:118)
位于com.blynq.app.tools.ALogger.getLogger(ALogger.java:49)
在com.blynq.app.tools.ALogger.getLogger上(ALogger.java:28)
在com.blynq.app.tools.StorageTools(StorageTools.java:37)
位于com.blynq.app.multipaneplayer.MainPlayer.setPlayerDefaultConfiguration(MainPlayer.java:162)
位于com.blynq.app.multipaneplayer.MainPlayer.initiatePlayer(MainPlayer.java:99)
位于com.blynq.app.multipaneplayer.MainPlayer.onResume(MainPlayer.java:91)
位于android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1206)
在android.app.Activity.performResume上(Activity.java:5473)
在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)上
位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
在android.app.ActivityThread.access$800(ActivityThread.java:135)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5017)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
在dalvik.system.NativeStart.main(本机方法)

有人能帮我理解这个问题吗

你好@Jay,如果我想问的话,你为什么在Android中使用log4j logger而不是Android Log?在运行
gradle dependencyInsight--dependency log4j
之后,你是否有一个log4j依赖项的
(冲突解决)
标签?为什么你有一个使用
getLogger()
方法的示例,只有一个参数?你好@Jay,如果我可能会问,为什么在Android中使用log4j logger而不是Android Log?在运行
gradle dependencyInsight--dependency log4j
之后,是否有log4j依赖项的
(冲突解决)
标签?为什么只有一个参数的
getLogger()
方法的使用示例?