类文件不运行

时间:2013-08-08 07:58:02

标签: java classpath

C:\Users\student3>java -cp C:\users\student3 start
Exception in thread "main" java.lang.NoClassDefFoundError: start (wrong name: wo
rk/start)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

屏幕截图:http://imageshack.us/photo/my-images/835/mt6a.png/ 这是我第一次通过Windows运行课程,会发生什么?

更新

线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / poi / ss / usermodel / Row so ..我应该创建100个目录吗?

2 个答案:

答案 0 :(得分:2)

看起来您已将start类放在名为work的包中。在这个原因你需要:

  • start.class放入名为work的目录中,然后致电java -cp C:\users\student3 work.start
  • 或者只是从源文件中删除package work;行 - 然后该命令将按预期工作。

作为旁注:根据惯例,Java类名称​​总是以大写字母开头。因此,您应该将start重命名为Start

答案 1 :(得分:1)

请注意“错误的名称:工作/开始”部分。这意味着找到了类文件,但它包含一个名为“work.start”的类,但是你想运行一个名为“start”的类。

你可以做两件事:

  1. 创建一个名为work的目录,并将start.class文件移动到那里。使用“java work.start”运行。
  2. 从start.java中删除包声明并重新编译。