2017-09-05 21 views
0

我想让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后,看看是否修复了这个问题,没有变化。
任何建议,以找到问题的原因将受到欢迎。

回答

0

我在我的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这么好的资源没有发现问题,他们为什么要这样做。神秘的错误消息没有提示问题的根源。这不应该是这么难。这是非常令人沮丧的。

相关问题