问题:安装完JDK ,设定环境变量后出现这个错误:
junezhang@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib$ java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
原因:由于JAVA_HOME/bin下面的tool.pack和JAVA_HOME/jre/lib下面的rt.pack没有完全解压
解决办法:
junezhang@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib$ unpack200 rt.pack rt.jar
Error: Could not open jar file: rt.jar
使用普通用户执行unpack200报错了,切换成root用户,首先设置root用户的密码,如下:
junezhang@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib$
sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
junezhang@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib$
su root
Password:
root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib#
unpack200 rt.pack rt.jar
The program 'unpack200' can be found in the following packages:
* openjdk-6-jre-headless
* openjdk-7-jre-headless
Try: apt-get install root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib#
java
The program 'java' can be found in the following packages:
* default-jre
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
Try: apt-get install
这里注意到,虽然使用root用户,执行unpack200仍然报错,需要重新加载环境变量: root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib#
source /etc/profile
root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib#
java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
然后继续执行unpack200,将rt.pack装换为rt.jar:
root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51/jre/lib# unpack200 rt.pack rt.jar
这里再执行java就ok了,貌似不需要将tools.pack装换为tool.jar:
root@junezhang-virtual-machine:/usr/java/jdk1.8.0_51# java -version java version "1.8.0_51" Java(TM) SE Runtime Environment (build 1.8.0_51-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)