2017-09-05 18 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這麼好的資源沒有發現問題,他們爲什麼要這樣做。神祕的錯誤消息沒有提示問題的根源。這不應該是這麼難。這是非常令人沮喪的。

相關問題