Exception in thread "main" java.lang.NoClassDefFoundError: Demo (wrong name: com/zhangyun/Demo)解决办法

介绍一个Java初学者可能会遇到的问题


首先,创建一个类,如下
文件名:Demo.java

package com.zhangyun;

public class Demo {

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


然后我找到对应在磁盘的位置,如下:

E:\MyEclipse10\JavaLearning\src\com\zhangyun>dir

2015/08/12  22:01    

         .
2015/08/12  22:01              ..
2015/08/12  21:52               206 Demo.java
               1 个文件            206 字节
               2 个目录 15,542,927,360 可用字节

然后我编译java文件:

E:\MyEclipse10\JavaLearning\src\com\zhangyun>javac Demo.java

E:\MyEclipse10\JavaLearning\src\com\zhangyun>dir
2015/08/12  22:04    

         .
2015/08/12  22:04              ..
2015/08/12  22:04               427 Demo.class
2015/08/12  21:52               206 Demo.java
               2 个文件            633 字节
               2 个目录 15,542,927,360 可用字节

编译成功后,产生Demo.class文件,我开始运行:

E:\MyEclipse10\JavaLearning\src\com\zhangyun>java Demo
Exception in thread "main" java.lang.NoClassDefFoundError: Demo (wrong name: com
/zhangyun/Demo)

        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

发现出错了,其实遇到上面的问题,不要着急,因为我java代码中存在包,所以正确的执行方法是:

E:\MyEclipse10\JavaLearning\src\com\zhangyun>cd ../../

E:\MyEclipse10\JavaLearning\src>javac -d . com\zhangyun\Demo.java

E:\MyEclipse10\JavaLearning\src>java com.zhangyun.Demo
Hello World!

注释:很多在Eclipse或MyEclipse中开发习惯了,当然不会遇到这个问题,但是java的初级爱好者,大多喜欢拿着记事本写着代码,dos窗口中敲着命令。。。。


你可能感兴趣的:(Java)