在一台CentOS的虚拟机上安装了jdk之后,执行java报错,错误信息如下:
[root@node18 ~]# java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
[root@node18 ~]#
经检查环境变量设置完全正确:
[root@node18 ~]# echo $JAVA_HOME
/usr/java/jdk1.6.0_29
[root@node18 ~]# echo $PATH
/opt/apache/apache-ant-1.8.2/bin:/usr/java/jdk1.6.0_29/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@node18 ~]#
根据网上的资料,进行了修复操作:
[root@node18 ~]# cd $JAVA_HOME
[root@node18 jdk1.6.0_29]# cd lib
[root@node18 lib]# ls
ct.sym dt.jar htmlconverter.jar ir.idl jconsole.jar jexec orb.idl sa-jdi.jar tools.pack visualvm
[root@node18 lib]# ls -lrt
总计 21764
-rw-r--r-- 1 root root 2406026 2011-10-03 sa-jdi.jar
-rw-r--r-- 1 root root 387784 2011-10-03 jconsole.jar
-rw-r--r-- 1 root root 429 2011-10-03 orb.idl
-rw-r--r-- 1 root root 18380 2011-10-03 ir.idl
-rw-r--r-- 1 root root 15678909 2011-10-03 ct.sym
-rw-r--r-- 1 root root 145442 2011-10-03 dt.jar
-rw-r--r-- 1 root root 215294 2011-10-03 htmlconverter.jar
-rw-r--r-- 1 root root 3323731 2011-10-04 tools.pack
-rwxr-xr-x 1 root root 7056 2011-10-04 jexec
drwxr-xr-x 6 root root 4096 2011-12-05 visualvm
[root@node18 lib]# unpack200 tools.pack tools.jar
[root@node18 lib]#
[root@node18 lib]#
[root@node18 lib]# java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
[root@node18 lib]#
[root@node18 lib]#
[root@node18 lib]# cd ../jre/lib/
[root@node18 lib]#
[root@node18 lib]# unpack200 rt.pack rt.jar
[root@node18 lib]#
[root@node18 lib]#
[root@node18 lib]# java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode)
[root@node18 lib]#
很纳闷,为什么在安装jdk的时候会有问题的,连 tools.jar 和 rt.jar 这么重要的文件都没有呢?
参考资料:
http://frankzhao.blog.51cto.com/273790/244586/
PS:后来发现这个解决方法治标不治本,其他的程序无法起来,比如tomcat,最后只好重新安装jdk才解决。