2013-08-28 73 views
2

我一直在與這個程序戰鬥了一段時間,不知道什麼是錯的。任何幫助將不勝感激。Java類將不會運行(命令提示符)

所以這是問題所在。我有三個類,一個用於登錄到mysql數據庫,另一個用於從數據庫輸出數據,最後一個用於保存main方法。我遇到了一個很大的問題,就是讓他們編譯得到關於在不同類中找到方法符號的錯誤。我終於得到了他們所有的編譯使用命令"javac -d bin/cdtPack src/CDT.java src/login.java src/ClientBase.java"

但是,現在當我嘗試運行與方法主要的類,我得到錯誤:

Exception in thread "main" java.lang.noClassDefFoundError: CDT (wrong name: cdtPack/CDT)

然後在Java中的列表....

任何人都有一個想法可能會出錯?

+3

它看起來像'CDT'要麼在包屬於'cdtPack'或者你從錯誤的目錄中運行它...嘗試更改到'斌\ cdtPack'目錄並運行類文件再次? – MadProgrammer

+0

如果這沒有幫助,請查看其他Google&SO點擊「java.lang.noClassDefFoundError」「錯誤的名稱」。 –

+0

這個網站讓我感到困惑,所以我不知道如何選擇你的答案@MadProgrammer,但是當我備份到它運行的bin目錄時。 :D – user2713086

回答

0

它看起來像CDT要麼屬於在包裝cdtPack或者你從錯誤的目錄中運行它...

嘗試改變到bin目錄,並運行class再次文件。不要忘記在class名稱前加上package這個名字。例如:

...\bin> java cdtPack.CDT 
+0

我不認爲這將工作。 –

+0

@StephenC如果'CDT'屬於默認包,則會生效。如果'CDT'是假設在'cdtPack'包中,我會同意。但考慮到OP使用'javac -d bin/cdtPack ...'來編譯這些類,我相信它們在默認包中......我當然可能完全錯了;) – MadProgrammer

+0

事實上,JVM說類中的名字是「cdtPack/CDT」意味着它必須有一個'package'語句。 –

-1

試試這個

你轉到src目錄,如果類文件可以有,然後鍵入

的Java CDT

如果類存在於其他目錄,然後鍵入

java a/b/c/JavaClassName

如果你想在運行時添加一些運行時jar然後

java -cp classpath =%classpath%; jarfilename.jar;   A/B/C/JavaClassName

1

由於linked Q&A解釋,當您嘗試運行使用了錯誤的類名的Java應用程序出現這種情況。

您的類看起來是這樣的:

package cdtPack; 
public class CDT { 
    .... 
} 

這意味着,它的類名是 「cdtpack.CDT」。

但你正在運行像這樣:

$ java CDT 

的JVM是在告訴你:

"You told me to run CDT, but when I looked at it, the class said its name is "cdtpack.CDT"!!"

你必須讓你的頭部周圍的方式,Java類路徑的作品,和javacjava以及所有其他Java工具查找類的方式。

您的「CDT.class」文件應位於名爲「cdtpack」的目錄中,然後「cdtpack」的父目錄目錄應位於類路徑中;即

編譯如下:

$ javac -d bin -classpath bin src/cdtpack/CDT.java 

應創建的 「bin/cdtpack/CDT.class」。然後運行是這樣的:

$ java -classpath bin cdtpack.CDT