近日在redhat上安装jdk出现了一个莫名的错误
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
辛苦google了一个小时,终于找到了解决方案
首先要确认的是环境变量的设置是否正确
相信大家都是很细心的,这方面如果有错误也会很容易发现
然而还有一个隐蔽的地方也会产生上述的错误
就是lib和jre/lib文件夹中的rt和tools是否是打包后的形式
如果发现rt.pack 和 tools.pack 那么多半问题就出在这里
解决方法也很简单,只要将相应文件解压成rt.jar 和 tools.jar
可以使用bin里面的unpack200工具
如:unpack200 rt.pack rt.jar
解压后java -version应该就没有问题了~~
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
可以看出是没有找到基础类库,查看一下tools.jar及rt.jar 果然没有,果断重新解包出来,
这个错误的原因是没有找到tools.jar及rt.jar;
tools.jar是关于一些工具的类库
rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的class文件
解包方法,jdk每个版本unpack 位置不一样, 例如:
当要解压tools.pack及rt.pack的时候,这样解压
/usr/java/jdk1.7.0_60/jre/lib# ../bin/unpack200 rt.pack rt.jar
/usr/java/jdk1.7.0_60/lib# ../bin/unpack200 tools.pack tools.jar
测试一下 java-version 搞定