cmd java无法正常工作

sub*_*ess 0 java classpath

我目前正在学习Java并使用我的命令提示符作为编译器.但每次我执行java命令后跟我的测试类"Hello",我得到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: hello/Hello)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Run Code Online (Sandbox Code Playgroud)

现在我检查了我的"CLASSPATH"环境变量,它是正确的,如下所示:.; C:\ Program Files\Java\jdk1.7.0_25\bin; 我甚至试过删除.从CLASSPATH开始,但它没有做任何不同的事情.现在我的javac命令可以通过创建.java类的.class版本来正常工作.但我真的无法让它实际执行java命令.

我的类的名字是Hello,所以我输入了javac Hello.java来将我的文件编译为类文件并且它有效.但是当我输入:java Hello是我收到上述错误消息的时候.我已经在我创建的NetBeans IDE上测试了该程序,它完美无缺,没有任何错误.

有什么可能会阻止我执行我的java命令来运行.class文件?

Jun*_*san 5

我的类的名字是Hello,所以我输入了javac Hello.java来将我的文件编译为类文件并且它有效.但是当我输入:java Hello

最可能的问题是,在运行java程序时,您没有将完整的类名与包结构一起放入.它应该像这里提到的那样运行:

java packagenhierarchy.Hello 
Run Code Online (Sandbox Code Playgroud)

假设您的包名是,com.my.hello而您的主类名是,Hello那么它应该从包含顶级包的目录运行,如下所示:

java com.my.hello.Hello
Run Code Online (Sandbox Code Playgroud)

更新:根据您的意见和了解工作目录,以下是您应该运行的内容:

java -cp C:\hello\src\hello hello.Hello
Run Code Online (Sandbox Code Playgroud)