线程“main”中的异常java.lang.NoClassDefFoundError:org/apache/logging/log4j/LogManager
我想让log4j2在Netbeans中工作。无论我做什么,我得到以下错误线程“main”中的异常java.lang.NoClassDefFoundError:org/apache/logging/log4j/LogManager
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at java.lang.ClassLoader.defineClass1(Native Method)
...
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)14
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
我在这里 Setting up log4j2 下面的说明,并试图运行相同的演示程序。
我试图找到解决方案,并发现此帖。 Similar Problem here
这个职位Class not found是我的问题的确切副本,但没有有效的答复发布。
我已经将log4j-core-2.8.2.jar和log4j-1.2-api-2.8.2.jar添加到项目库中。这两个文件安装在主src文件夹的子文件夹中,以便它们位于类路径中。
Netbeans安装在新的Ubuntu版本上。令人沮丧的是我能够在Windows机器上运行它。
我试着创建一个只有这个logdemo类的新项目。我将log4j2 jar文件添加到库中。我还将命令-Dlog4j.configurationFile=/home/test/config/log4j2.xml
添加到“运行”>“VM选项”框中。
我仍然得到完全相同的错误消息。
我检查了我的安装。
[email protected]:~$ java -version
Java版本 “1.8.0_144” 的Java(TM)SE运行时环境(建立1.8.0_144-B01) 爪哇热点(TM)64位服务器VM(生成25.144-B01,混合模式)
我在setting Java Environment in Ubuntu发现此帖子。我会认为使用apt-get会设置环境,但我可能是错的。
我检查了/ etc/environment。那里没有提到Java。 在.bash.rc中没有导出java路径。 /etc/profile中没有java。
似乎有很多地方可以设置路径。我发现这个帖子Setting PATH variables in Ubuntu。这是现代和有益的。 我也发现了这个帖子Setting Java path variables in Ubuntu
添加以下到我家的个人资料〜/ .profile文件
JAVA_HOME=/usr/lib/jvm/default-java
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
注意使用默认的Java。这是一个JDK的符号链接。我希望如果/当我升级到下一个版本时,apt-get将更改链接。
重新启动Ubuntu后,看看是否修复了这个问题,没有变化。
任何建议,以找到问题的原因将受到欢迎。
我在我的Windows 10 PC上安装了Netbeans,并且仍然有相同的症状,所以我想这个问题必须与jar文件。
我找到了解决方案。我使用的是log4j-core-2.8.2.jar和log4j-1.2-api-2.8.2.jar,而不是log4j-api-2.3.jar和log4j-core-2.3.jar。
无论出于何种原因2.3版本和2.8.2版本都没有。当我更改jar文件时,程序编译并在Win 10和Ubuntu下运行,没有错误。
我对此非常恼火。我正在学习Java,而且我喜欢这门语言,但我花了更多时间解决问题,而不是编写代码。演示程序编译成OK,只在运行时抛出错误。有经验的程序员让Stackoverflow这么好的资源没有发现问题,他们为什么要这样做。神秘的错误消息没有提示问题的根源。这不应该是这么难。这是非常令人沮丧的。