java.lang.NoClassDefFoundError当我从终端运行java文件时

我是一个java新手。 我一直在使用Eclipse来测试一个简单的java类(名为NewHelloWorld),它在控制台中运行良好。 当我尝试从终端做同样的事情时,它正确编译(创建一个HelloWorld.class而不会给出任何错误),但是然后java NewHelloWorld显示以下错误

 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 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桌面

错误的名称:org / kodeplay / kodejava / NewHelloWorld

cd到包根目录,这样你就可以在包含org文件夹的文件夹中然后执行

 java -cp . org.kodeplay.kodejava.NewHelloWorld 

错误消息为您提供了线索:

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

看起来您的类名为org.kodeplay.kodejava.NewHelloWorld 。 Java命令行需要知道完全限定的类名:

 java -cp . org.kodeplay.kodejava.NewHelloWorld 

应该做的伎俩。

转到包根目录( org的父目录)并运行:

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

我也不会放. 对于我的CLASSPATH永久(在.bashrc.bash_profile/etc/profile ),它可能会导致意外行为。

cd到root包。 大多数情况下,如果从eclipse IDE创建,它将是Project中的src文件夹。

java -cp . org.kodeplay.kodejava.NewHelloWorld java -cp . org.kodeplay.kodejava.NewHelloWorld应该可行

java org.kodeplay.kodejava.NewHelloWorld也应该有效。 我尝试了两种方法,但在这两种情况下都能正常工作

运行我在Mac OS X上用文本编辑器编写的HelloWorld程序时遇到了类似的问题。它在远程Linux机器上运行良好,但是从主目录运行它我得到了可怕的NoClassDefFoundError

发现我可以通过以下运行来修复它:

 java -cp . HelloWorld 

或者,在没有classpath限定符的情况下,将当前目录添加到当前会话的bash CLASSPATH之后:

 export CLASSPATH=.