2013-07-26 93 views
1

我正在開發一個帶有三個類的程序,並且還包含一些外部jar文檔和類。當我在Eclipse中運行它時它工作正常,但我需要嘗試其他一些程序,所以我需要在控制檯上運行它。我將它全部保存在一個文件夾中,該文件夾包含另外兩個文件夾,一個文件夾由我創建.class文件夾,另一個文件夾包含.java和.jar文件夾以及一個帶有外部類的文件夾。我試圖創建一個包含這個文件夾和清單的.jar壓縮文件,我在哪裏告訴主要類。在jar中找不到我的主類

當我運行它時,我收到「線程中的異常」main「java.lang.NoClassDefFoundError」,所以它沒有找到main所在的類,但我不知道爲什麼。我已經嘗試了一些不同的方式來在清單中定義它,並更改類路徑,但它仍然不起作用。

任何解決方案或建議?

謝謝!

+1

請郵寄: - 命令用來創建的Jar - 用於運行程序 命令 - 當它失敗的堆棧跟蹤(即當你看到'異常線程「main」完整的錯誤消息'等) – Daniel

+0

它看起來對我來說是一個相似的情況。你的開始看起來如何? – reporter

+0

看來,找到你的主,但拋出java.lang.NoClassDefFoundError,可以添加一些堆棧跟蹤? –

回答

0

創建項目時例如ABC IDE通常Netbeans創建源文件夾並創建主類作爲包含主類的ABC.java。在Netbeans IDE中,如果您的主類不是ABC,或者如果不是,則必須在ABC.java類中執行應用程序時創建要運行的類的實例。

0

在我的一個項目中,我也跑了同樣的情況。這個錯誤信息始終是我的錯誤理解。

原因在我的情況下是計算機無法找到聲明的jar文件。使用參數-cp讓我變得開心。因此,嘗試

java -jar -cp ./Server.jar 

編輯:

我忘了提及,我也提到類的全qulified名包含主類。

1

NoClassDefFoundError表示該文件在編譯時存在,但在運行時未找到。由於沒有編譯問題,所以創建了jar,但是在運行時,當使用像java -jar jarfilename完全限定類的命令時,它拋出了這個異常。檢查classpath變量,驗證您是否從命令窗口中正確的文件夾位置執行命令。 我一直提到以下鏈接,這樣的錯誤,它的工作對我來說

http://javaeesupportpatterns.blogspot.in/2012/06/javalangnoclassdeffounderror-how-to.html

0

此:

The stacktrace is "Exception in thread "main" java.lang.NoClassDefFoundError: /bin/TextClient 

我看來像你的清單是錯誤的。要糾正它,你可以使用:

jar -uvfe Server.jar full.name.of.your.MainClass 

注:一些類文件的文件/路徑名! 這將創建一個MANIFEST,告訴full.name.of.your.MainClass是您的主要課程。

此外,如果你的JAR包含類似的條目:

bin/Foo.class 
bin/... 

您創建的JAR文件可能是從錯誤的地方(除非你的TLD是斌)。 如果你的主類被命名爲org.adepts.Main,那麼頂級條目應爲:

org/adepts/Main.class 

(這是它會被搜索到。)

0

我終於通過使用Eclipse「導出」選項解決了它而不是手動創建它。