2010-12-17 120 views
1

我是一個java新手。我一直在使用Eclipse來測試一個簡單的Java類(名爲NewHelloWorld),它在控制檯中運行良好。當我嘗試從終端做同樣的事情,它編譯正確(不給任何錯誤創建HelloWorld.class的),但隨後java NewHelloWorld顯示以下錯誤當我從終端運行java文件時發生java.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: NewHelloWorld (wrong name: org/kodeplay/kodejava/NewHelloWorld) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    Could not find the main class: NewHelloWorld. Program will exit. 

我也試過java -classpath . NewHelloWorld但不工作的以及給出相同的錯誤。

這些環境變量的值:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
JAVA_HOME="/usr/lib/jvm/java-6-openjdk" 
CLASSPATH="/usr/lib/jvm/java-6-openjdk/lib:." 

是其他任何需要或者我在這裏缺少什麼? 感謝

PS:使用Ubuntu 10.04桌面

回答

9

錯名字:組織/ kodeplay/kodejava/NewHelloWorld

cd到包的根,讓你的文件夾中包含很org文件夾然後做

java -cp . org.kodeplay.kodejava.NewHelloWorld 
+0

哦.. 得到它了。非常感謝 – naiquevin 2010-12-17 12:26:07

+1

不客氣。 – BalusC 2010-12-17 12:26:57

+0

+1簡而言之,完整答案。 – 2013-10-30 20:45:07

4

錯誤消息給你一個線索:

(wrong name: org/kodeplay/kodejava/NewHelloWorld) 

看起來你的班級叫做org.kodeplay.kodejava.NewHelloWorld。 Java命令行需要知道完全合格的類名:

java -cp . org.kodeplay.kodejava.NewHelloWorld 

應該這樣做。

+0

http://meta.stackexchange.com/questions/15775/do-you-delete-your-own-answer-when-its-a-duplicate – BalusC 2010-12-17 12:34:03

+1

@BalusC:*答案*和*說明*。關於「Java命令行需要知道完全合格的類名」的一點是一個解釋。我不認爲這是重複的。 – 2010-12-17 12:37:23

1

轉到包根目錄(的org父目錄)並運行:

java -cp .:$CLASSPATH org.kodeplay.kodejava.NewHelloWorld

而且我不會把.CLASSPATH永久(在.bashrc.bash_profile/etc/profile),可能導致不良行爲。

0

cd直到根包。大多數情況下,如果從eclipse IDE創建的話,它將會是Project中的src文件夾。

java -cp . org.kodeplay.kodejava.NewHelloWorld應該工作

java org.kodeplay.kodejava.NewHelloWorld也應該工作。我試用過的東西,它在這兩個

0

我有運行的HelloWorld程序我曾與在Mac OS X的文本編輯器,它運行在一個遠程Linux盒罰款寫了一個類似的問題的情況下工作正常,但從主目錄運行它我得到了可怕的NoClassDefFoundError

發現我可以通過運行爲解決這個問題:

java -cp . HelloWorld 

,或者沒有在classpath預選賽中,將當前目錄下我的bash CLASSPATH爲本屆會議之後:

export CLASSPATH=. 
相關問題