线程" main"中的例外情况java.lang.NoClassDefFoundError:org / apache / logging / log4j / LogManager

时间:2017-09-05 09:57:00

标签: java ubuntu netbeans path environment-variables

我想让log4j2在Netbeans中运行。无论我做什么,我都会遇到以下错误

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 到Run> VM选项框。

我仍然得到完全相同的错误消息。

我检查了我的安装。

dazz@mimir:~$ java -version

java version" 1.8.0_144" Java(TM)SE运行时环境(版本1.8.0_144-b01) Java HotSpot(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

注意使用default-java。这是JDK的符号链接。我希望如果/当我升级到下一个版本时,apt-get将改变链接。

重新启动Ubuntu后,看看是否解决了这个问题,没有变化 任何有关问题原因的建议都会受到欢迎。

1 个答案:

答案 0 :(得分:2)

我在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,我喜欢这种语言,但是我花了很多时间来解决问题,而不是编写代码。演示程序编译好,只在运行时抛出错误。使Stackoverflow成为如此优秀资源的经验丰富的程序员并没有发现问题,为什么要这样做。隐秘的错误消息没有提示问题的根本原因。这不应该是困难的。这非常令人沮丧。