[zt ]Exception in thread "main" .........

来源:互联网 发布:网络普通发票管理系统 编辑:程序博客网 时间:2024/06/05 17:17

为什么会出现Exception in thread "main" java.lang.NoClassDefFoundError: welcome的错误?
2007年06月09日 星期六 21:26

环境: redhat linux as4, j2sdk1.5.0
welcome.java的内容如下:

public class welcome
{
         public static void main(String [] args)
         {
                 System.out.print("welcome.\n");
                 return;
         }
}

编译: javac welcome.java
正确

运行: java welcome
出错: Exception in thread "main" java.lang.NoClassDefFoundDrror: welcome

后来终于找到原因: java加载了welcome.class以后,由于class文件里保存的只是对象引用记号,并没有保存类本身,并不像C++一样在二进制文件中就保存着类的定义。所以这时java解释器就试图到环境变量CLASSPATH中找类welcome,而我当时的环境变量CLASSPATH为:
$CLASSPATH=/usr/java/jdk1.5.0_11/lib:/usr/java/jdk1.5.0_11/jre/lib
显示java解释器找不到welcome类的定义,即而出错。

悟出这一点,我立刻进行验证,先重新设置环境变量:
CLASSPATH=/usr/java/jdk1.5.0_11/lib:/usr/java/jdk1.5.0_11/jre/lib:.
注意最后加了一个冒号和点,冒号是多个域的分割符,点代表让java解释器到当前目录下寻找welcome.class

一切OK!