2015-04-03 52 views
0

我正在開發一個Java應用程序,但我得到一個java.lang.NoClassDefFoundError。 我已經檢查了所有我能想到的:Java沒有類Def錯誤

  • 的jar文件存在於目錄,而不是0字節
  • 的jar文件具有相同的權限的所有其他jar文件(我與LS顯示此-la cmmand)
  • jar文件包含報告缺失的確切類(我在輸出中使用jar tf命令顯示了這一點)
  • 在-cp選項下的命令字符串中指定了jar文件我有更改了班級路徑中的罐子順序,另一個
  • j AR文件中確認的 - 否則程序的其他部分不會工作
  • 這是我建立針對
  • 項目相同的jar文件工作在Eclipse中我的筆記本電腦

它只是不在我的RaspberryPi中工作。

我必須添加別的東西到我的清單調試ClassNotFound錯誤。有沒有人有什麼建議?

我有我在下面運行的檢查的輸出清單。

[email protected] ~/personal_services $ java -cp /home/pi/personal_services/Console/Console.jar:/home/pi/personal_services/lib/Library.jar:/home/pi/personal_services/lib/JavaCommon.jar:/home/pi/personal_services/lib/sqlite-jdbc-3.7.2.jar:/home/pi/personal_services/lib/commons-codec-1.10.jar metcarob.com.personalservices.console.Main /home/pi/personal_services/Console/ConsoleSettings.xml ListNodes 
EVALUATING ListNodes 
CONNECTING 
Exception in thread "ConnectionThread" java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64 
    at metcarob.com.common.network.xmlprotocol.ConnectionSocketContainer.ProcessIncommingMessages(Unknown Source) 
    at metcarob.com.common.network.xmlprotocol.Connection.processIncomingMessages(Unknown Source) 
    at metcarob.com.common.network.xmlprotocol.Connection.runDER(Unknown Source) 
    at metcarob.com.common.thread.CloseableThread.run(Unknown Source) 
RUNNING ListNodes 
Closing connection 
Closing connection 
DONE 
[email protected] ~/personal_services $ jar tf /home/pi/personal_services/lib/commons-codec-1.10.jar | grep Base64 
org/apache/commons/codec/binary/Base64.class 
org/apache/commons/codec/binary/Base64InputStream.class 
org/apache/commons/codec/binary/Base64OutputStream.class 
[email protected] ~/personal_services $ ls -la /home/pi/personal_services/lib/commons-codec-1.10.jar 
-rw-r--r-- 1 pi pi 284184 Apr 3 20:54 /home/pi/personal_services/lib/commons-codec-1.10.jar 

感謝 羅伯特

+0

挺有意思的...... jar使用的是什麼jdk版本? – user390525 2015-04-03 23:14:03

+0

您是否檢查http://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java – Abhi 2015-04-03 23:16:44

+0

樹莓派有Java版本「1.8.0」 Java(TM)SE運行時環境(build 1.8.0-b132) 我的筆記本電腦上的Eclipse中的HotSpot(TM)客戶端VM(構建25.0-b70,混合模式)我正在構建jdk 1.7。這件事情呢?它似乎沒有與其他jar文件 – Robert3452 2015-04-03 23:21:54

回答

0

我發現我的問題的原因。

我在主應用程序:Console.jar 它使用了utiliy罐子:JavaCommon.jar 其用於:

當我建立JavaCommon.jar我提供了一個類路徑公地編解碼器1.10.jar這包含commons-codec-1.10.jar並編譯時沒有問題

當我構建Console.jar時,我提供了一個包含JavaCommon.jar但不包含commons-codec-1.10.jar的類路徑,並且它沒有編譯問題

然後當我運行我的應用程序時,我提供了一個classpath,它包含編輯所有的罐子,但我仍然得到了NoClassDefFoundError異常

當我改變了構建,所以我建立了一個包含所有罐子的類路徑Console.jar它編譯和運行沒有問題。