【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/logging/log4j/LogManager
【发布时间】:2018-02-13 13:59:07
【问题描述】:

我正在尝试让 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 Options 框。

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

我检查了我的安装。

dazz@mimir:~$ java -version

java 版本“1.8.0_144” Java(TM) SE 运行时环境 (build 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 后查看是否解决了问题,没有变化。
欢迎提出任何找出问题原因的建议。

【问题讨论】:

    标签: java ubuntu netbeans path environment-variables


    【解决方案1】:

    我在我的 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 成为如此出色资源的经验丰富的程序员并没有发现问题,他们为什么要发现问题。神秘的错误消息没有暗示问题的根本原因。不应该这么难。这很令人沮丧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 2017-03-24
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多