2013-04-27 224 views
3

我对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. 

请协助。

回答

3

您已将您的班级放在名为chapter6的包中。这意味着java文件应位于项目的类根文件夹中名为chapter6的文件夹中。当你运行它,你应该在根文件夹中,然后使用命令java chapter6.BoxDemo

+0

谢谢,现在我明白了。我在使用C:\ Prabhjot \ Java \ CompleteRefence \ build \ classes \ chapter6中的命令时出错,这应该是您提到的方式。谢谢!! – prabh 2013-04-27 06:25:20

0

试试这个

C:\Prabhjot\Java\CompleteRefence\build\classes>java chapter6.BoxDemo (RUN) 

没有必要指定的.class灭绝的文件,而running.After编译java文件它会创建一个.class文件。

EXAMPLE

+0

@ user1630301做你解决了这个问题 – samba 2013-04-27 06:14:09

+0

上面的问题是我的代码是在包装,请参阅:包第六章; – prabh 2013-04-27 06:19:12

+0

这不起作用,因为未指定包名 – NilsH 2013-04-27 06:22:00

0

当你调用BoxDemo.class,爪哇寻找一个在BoxDemo呼包class类,它不存在。正如您从输出java.lang.NoClassDefFoundError: BoxDemo/class中看到的那样,它正在搜索目录BoxDemo

相反,只需指定类名称:BoxDemo;例如java BoxDemo

+0

我不确定为什么这是低投票的,因为这提供了_exact与上面相同的答案,只是与更多信息。 – Zyerah 2013-04-27 06:18:53

+0

我没有downvote,但你的例子不起作用,因为包名称不正确。 – NilsH 2013-04-27 06:23:45

+0

好的。这就说得通了。 – Zyerah 2013-04-27 06:25:44

4

一流的文件应该在这个位置:

C:\Prabhjot\Java\CompleteRefence\build\classes\chapter6\BoxDemo.class 

那么你应该在里面:

C:\Prabhjot\Java\CompleteRefence\build\classes> 

然后发出命令:

java chapter6.BoxDemo 

enter image description here

+1

谢谢,它帮助 – prabh 2013-04-27 06:25:52

+1

+1好解释 – samba 2013-04-27 06:31:07

0

从控制台运行程序的方式存在错误。

你正在做

java BoxDemo.class

但是,你需要做的只是

java BoxDemo

在运行您的程序,你不需要提及的.class的名称。

,如果你是从根文件夹访问它,那么你需要做的

java chapter6.BoxDemo

相关问题