Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从终端运行java文件时发生java.lang.NoClassDefFoundError_Java - Fatal编程技术网

从终端运行java文件时发生java.lang.NoClassDefFoundError

从终端运行java文件时发生java.lang.NoClassDefFoundError,java,Java,我是java新手。我一直在使用Eclipse测试一个名为NewHelloWorld的简单java类,它在控制台中运行良好。当我尝试从终端执行相同的操作时,它会正确编译并创建一个HelloWorld.class,而不会给出任何错误,但是java NewHelloWorld会显示以下错误 Exception in thread "main" java.lang.NoClassDefFoundError: NewHelloWorld (wrong name: org/kodeplay/kodejava

我是java新手。我一直在使用Eclipse测试一个名为NewHelloWorld的简单java类,它在控制台中运行良好。当我尝试从终端执行相同的操作时,它会正确编译并创建一个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类路径。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:使用Ubuntu10.04桌面

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

cd向上到包根目录,这样你就在包含org文件夹的文件夹中再做

java -cp . org.kodeplay.kodejava.NewHelloWorld
错误名称: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

应该可以做到这一点。

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

(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


我也不会放。将我的类路径永久保存在.bashrc、.bash_profile或/etc/profile中,可能会导致不希望的行为。

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

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

我也不会放。将我的类路径永久保存在.bashrc、.bash_profile或/etc/profile中可能会导致不希望出现的行为。

cd到根包。大多数情况下,如果从EclipseIDE创建,它将是项目中的src文件夹

java-cp。org.kodeplay.kodejava.NewHelloWorld应该可以工作

java org.kodeplay.kodejava.NewHelloWorld也应该可以工作。我尝试了这两种方法,从cd到根包,在这两种情况下都可以正常工作。大多数情况下,如果从EclipseIDE创建,它将是项目中的src文件夹

java-cp。org.kodeplay.kodejava.NewHelloWorld应该可以工作


java org.kodeplay.kodejava.NewHelloWorld也应该可以工作。我尝试了这两种方法,在这两种情况下效果都很好

我在Mac OS X上用文本编辑器编写的HelloWorld程序运行时遇到了类似的问题。它在远程Linux设备上运行良好,但在主目录下运行时,我遇到了可怕的NoClassDefFounder错误

发现我可以通过以下方式进行修复:

java -cp . HelloWorld
或者,在没有类路径限定符的情况下,将当前目录添加到当前会话的我的bash类路径后:

export CLASSPATH=.

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

发现我可以通过以下方式进行修复:

java -cp . HelloWorld
或者,在没有类路径限定符的情况下,将当前目录添加到当前会话的我的bash类路径后:

export CLASSPATH=.

@巴卢斯克:答案和解释是有区别的。关于Java命令行的部分需要知道完全限定的类名,这是一个解释。我不认为这是一个复制品。关于Java命令行的部分需要知道完全限定的类名,这是一个解释。我不认为这是复制品。