我在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中运行但不能从命令行运行?
答案 0 :(得分:1)
请参阅this,以生成一个jar文件包括依赖项。应该使用“编译”而不是“实现”来包含依赖项,那么您将获得一个更大的Jar文件,其中包含所有依赖项。通常gradle不会在Jar文件中包含依赖项,而是将所有依赖项都生成为一个jar文件。