为什么会出现Exception in thread "main" java.lang.NoClassDefFoundError: welcome的错误?

环境: 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!


阅读更多
个人分类: Java
上一篇ECSHOP 数据库结构参数表
下一篇DedeCMS信息发布员发布文章错误Error page的问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭