//文件名:Person1.java
class Person
{
public void so()
{
        System.out.println("abcdefg");
}
public static void main(String[] args)
{
Person A=new Person();
A.so();
}
}
//错误信息
java.lang.NoClassDefFoundError: Person1
Caused by: java.lang.ClassNotFoundException: Person1
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: Person1.  Program will exit.
Exception in thread "main" 
编译通过了,运行却没有通过。什么原因啊?

解决方案 »

  1.   

    路径问题,你运行的根本就不是这个类
    我这里的正常  F:\>javac Person.javaF:\>java Person
    abcdefgF:\>
      

  2.   

    主类的名称应和文件名一致了,你把文件名保存为Person.java
     这样就行了。
    把类名改为Person1  也行,注意大小写呀。
      

  3.   

    在运行的时候 jvm会先获取文件名 然后查找文件名指定的类 接着执行类的静态入口方法main
    jvm查找不到文件名指定的类 所以会抱NoClassDefFoundError 意思是没有找到类定义
    所以主类的名称应和文件名一致