在命令提示符下运行时发生ClassNotFoundException
问题描述:
我对java很陌生,试图运行一个计算卷的简单代码。代码如下:在命令提示符下运行时发生ClassNotFoundException
package chapter6;
class Box {
double width;
double height;
double depth;
}
package chapter6;
public class BoxDemo {
public static void main(String[] args) {
Box myBox = new Box();
double vol;
myBox.depth = 1;
myBox.height = 2;
myBox.width = 3;
vol = myBox.depth * myBox.height * myBox.width ;
System.out.println("Volume: " + vol);
}
}
我能够从Eclipse运行的代码,但是当我尝试运行命令提示符的代码我得到的错误:
C:\Prabhjot\Java\CompleteRefence\build\classes>java BoxDemo.class
Exception in thread "main" java.lang.NoClassDefFoundError: BoxDemo/class
Caused by: java.lang.ClassNotFoundException: BoxDemo.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: BoxDemo.class. Program will exit.
请协助。
答
您已将您的班级放在名为chapter6
的包中。这意味着java文件应位于项目的类根文件夹中名为chapter6
的文件夹中。当你运行它,你应该在根文件夹中,然后使用命令java chapter6.BoxDemo
答
答
当你调用BoxDemo.class
,爪哇寻找一个在BoxDemo
呼包class
类,它不存在。正如您从输出java.lang.NoClassDefFoundError: BoxDemo/class
中看到的那样,它正在搜索目录BoxDemo
。
相反,只需指定类名称:BoxDemo
;例如java BoxDemo
。
答
从控制台运行程序的方式存在错误。
你正在做
java BoxDemo.class
但是,你需要做的只是
java BoxDemo
在运行您的程序,你不需要提及的.class的名称。
,如果你是从根文件夹访问它,那么你需要做的
java chapter6.BoxDemo
谢谢,现在我明白了。我在使用C:\ Prabhjot \ Java \ CompleteRefence \ build \ classes \ chapter6中的命令时出错,这应该是您提到的方式。谢谢!! – prabh 2013-04-27 06:25:20