log4j运行时NoClassDefFoundError

时间:2018-09-28 02:38:26

标签: android-studio log4j

我在android jar模块中使用log4j。我可以成功构建jar文件并在AndroidStudio中成功运行它。

我的gradle配置是:

implementation 'log4j:log4j:1.2.17'

但是当我从命令行尝试jar文件时:

java -jar test.jar

我遇到了以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at com.yeetor.Main.<clinit>(Main.java:39)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

为什么它可以在AndroidStudio中运行但不能从命令行运行?

1 个答案:

答案 0 :(得分:1)

请参阅this,以生成一个jar文件包括依赖项。应该使用“编译”而不是“实现”来包含依赖项,那么您将获得一个更大的Jar文件,其中包含所有依赖项。通常gradle不会在Jar文件中包含依赖项,而是将所有依赖项都生成为一个jar文件。