日期:2014-05-20  浏览次数:20786 次

为什么在eclipse上编的java程序不能在控制台下运行
在eclipse上自动生成的程序如下:

package test001;

public class test001 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World!");

}

}

在eclipse下编译成test001.class运行良好,
可是当我用windows的cmd控制台下,输入java test001.class却总是
报错:
E:\eclipse\workspace\test001\bin\test001>java test001.class
Exception in thread "main" java.lang.NoClassDefFoundError: test001 (wrong name:
test001/test001)
  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$000(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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: test001. Program will exit.


我是新手,请大家帮忙,谢谢


------解决方案--------------------
看看环境是不是正确
------解决方案--------------------
查看下这个目录:E:\eclipse\workspace\test001\bin\test001>有这个文件没有test001.class

再者运行不用加.class
------解决方案--------------------
打包的程序在控制台下面这样做:
1、将生成的class带包文件夹一起拷贝,或者使用 javac -d . 源文件名.java编译生成带包的结构
2、在控制台下使用java 包名.类名执行,当前目录需要是包文件夹所在的目录
------解决方案--------------------
引用楼主 attop 的帖子:
在eclipse上自动生成的程序如下:

package test001;

public class test001 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World!");

}

}

在eclipse下编译成test001.class运行良好,
可是当我用windows的cmd控制台下,输入java test001.class却总是
报错:
E:\eclipse\workspace\test001\bin\test001>…

------解决方案--------------------
UP
------解决方案--------------------
比如:你应该 cd E:\eclipse\workspace\test001\bin
然后 java 包名.文件名(不含.class)
应该 java test001.test001

这样应该可以的。