class MultiThread
{
public static void main(String[] args)
{
MyThread mt=new MyThread();
mt.start();
while(true)
System.out.println("main:"+Thread.currentThread().getName());
}
}
class MyThread extends Thread
{
public void run()
{
while(true)
System.out.println(getName());
}
}
这段程序在eclipse可以运行,但在CMD命令框中报错如下
Exception in thread "main" java.lang.NoClassDefFoundError: MultiThreads
Caused by: java.lang.ClassNotFoundException: MultiThreads
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: MultiThreads.  Program will exit.
但在CMD中其他程序可以运行。另外本人最近刚换了JDK目前机子上有一个GLASSFISH包含一个JDK,还有另一个JDK

解决方案 »

  1.   

    JAVAC 命令没问题
    JAVA 命令出现上述问题的
      

  2.   

    DOS 命令有个当前目录,
    Java 有个 ClassPath 参数,
    ClassPath 参数默认不会自动考虑当前目录,如果你偶尔发现没添加当前目录也能跑,那就是因为安装 JDK 可以会帮你添加 .; 到环境变量中。如何写一个完整的 Java 命令行?比如:
    D:\> D:\JavaEnv\J2SE4\bin\java.exe -cp D:/training/classes;d:/jpa.jar;d:/j2ee.jar -Xms16m -Xmx256m -Duser.language=en_US com.mycompany.biz.Main -host A -port 1000
      

  3.   

    问题找到了 竟然是程序名少了个S,MultiThread
    JAVAC MultiThreads.java
    java MultiThreads
    当然就错了,我晕!
      

  4.   

     相当无语....建议多学习些基础,多看API...