一个JDK错误的解决2013-12-03解决JDK Error occurred during initialization of VM javalangNoClassDefFoundError因为需要使用老的JDK做测试,下载了一个J2SDK1.4的Bin安装包,下载地址:http://www.oracle.com/technetwork/java/javase/archive-139210.html但是安装和设置好环境之后运行java看版本号发现出错:# java -versionError occurred during initialization of VMjava/lang/NoClassDefFoundError: java/lang/Object检查PATH和CLASSPATH都设置没问题,查看安装目时居然发现lib目录下没有tools.jar和jre/lib下没有rt.jar:# ls -al /usr/java/j2sdk1.4.2/libtotal 8148-rw-r--r-- 1 root root 139034 Oct 31 15:08 dt.jar-rw-r--r-- 1 root root 1161394 Oct 31 15:08 htmlconverter.jar-rw-r--r-- 1 root root 18381 Oct 31 15:08 ir.idl-rw-r--r-- 1 root root 429 Oct 31 15:08 orb.idl-rw-r--r-- 1 root root 1743428 Oct 31 15:08 tools.pack-rwxr-xr-x 1 root root 145112 Oct 31 15:08 unpack取而代之的是tools.pack和rt.pack。于是使用lib目录下自带的uppack工具解压这两个jar:#cd /usr/java/j2sdk1.4.2/lib#unpack tools.pack tools.jar#cd ../jre/lib#../../unpack rt.pack rt.jar在查看:# ls -l /usr/java/j2sdk1.4.2/lib/tools.*-rw-r--r-- 1 root root 5092901 Oct 31 15:29 /usr/java/j2sdk1.4.2/lib/tools.jar-rw-r--r-- 1 root root 1743428 Oct 31 15:08 /usr/java/j2sdk1.4.2/lib/tools.pack# ls -l /usr/java/j2sdk1.4.2/jre/lib/rt.*-rw-r--r-- 1 root root 26782544 Oct 31 15:32 /usr/java/j2sdk1.4.2/jre/lib/rt.jar-rw-r--r-- 1 root root 8684102 Oct 31 15:08 /usr/java/j2sdk1.4.2/jre/lib/rt.pack在运行java一切正常了:# java -versionjava version "1.4.2"Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)