我在我的Java应用程序中使用了log4j2.3。我通过maven添加了依赖项。
当在eclipse中运行程序时,一切正常,但当我用Maven打包它并尝试运行JAR时,我得到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache logging/log4j/LogManager
at main.myclass.<clinit>(myclass.java:11)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
为什么在JAR中运行它时,它无法找到类?
添加log4j 1.2
也不起作用。该程序在eclipse中运行良好,因此应该不会丢失依赖项。
3条答案
按热度按时间31moq8wy1#
当您从命令行运行应用程序JAR时,依赖的JAR在运行时不可用。您需要在pom.xml中包含这两个插件中的任何一个,这样才能在运行时使依赖项可用。
使用:maven-shade-plugin
使用:maven-Dependency-plugin
当您执行
mvn package
时,它将生成uber jar/或将依赖项复制到outputDirectory。我更喜欢maven-shade-plugin来生成一个JAR将所有的依赖。oug3syen2#
请将JAR文件添加到库中的类路径中,这对我有效
k4emjkb13#
安装最新版本的
log4j
(我已经安装了log4j-2.3.jar
)。并执行以下步骤:
这对我很管用