筆者在Ubuntu14.04系統下安裝JDK1.7,使用的是jdk-7u79-linux-i586.rpm,需要先安裝alien。然而我使用這個rpm文件安裝完之後遇到了問題,提示“java/lang/NoClassDefFoundError: java/lang/Object ”。下面就如何利用rpm安裝以及如何解決的這個問題進行闡述,請各位批評指正。
工具/原料
Ubuntu 14.04 (也可以其他Linux系統,估計也會遇到相同的問題)
jdk-7u79-linux-i586.rpm
jdk-7u79-linux-i586.tar.gz
方法/步驟
首先在ubuntu系統中打開終端(ctrl+alt+T),然後輸入
sudo apt-get install alien
(安裝alien,這個alien用來把rpm轉化為deb的。之後使用dpkg命令安裝deb軟件包。)
輸入 sudo alien /usr/zm/QtForAndr/jdk-7u79-linux-i586.rpm
等待,直到可以再輸入命令的時候,就表示rpm已成功轉化為deb軟件包。
(我的rpn是放置在自定義文件夾QtForAndr文件夾下的)
輸入 sudo dpkg -i /usr/zm/QtForAndr/jdk-7u79-linux-i586.deb
等待,直到可以再輸入命令的時候,就表示已安裝完畢。但是安裝完畢,不表示就一定可以正常運行java
輸入 java -version
可以看到提示“java/lang/NoClassDefFoundError: java/lang/Object ”錯誤。其實這個錯誤有可能是因為rpm在轉deb的時候出現了隱性問題,這個問題顯現不出來,所以我們無從查起。
但是,我們可以看到在安裝的java的目錄下,/usr/java/jdk1.7.0_79/lib有個tools.pack,在/usr/java/jdk1.7.0_79/jre/lib下有個rt.pack。正常情況下這兩個文件應該是tools.jar和rt.jar。
這種情況下,可以使用右鍵壓縮或者使用/usr/java/jdk1.7.0_79/bin下的unpack200實現pack文件到jar文件的轉換,然後替換原來的pack文件。但是這個方法我試過,沒成功。
所以,我又下載了一個jdk-7u79-linux-i586.tar.gz,然後使用
tar -zxvf /home/zm/jdk-7u79-linux-i586.tar.gz
解壓出來jdk1.7.0_79文件夾
rm -rf /usr/java/jdk1.7.0_79
把原來的jdk1.7.0_79文件夾刪除,並把解壓出來的文件夾複製到此處
cp -rf /home/zm/jdk1.7.0_79 /usr/java
修改環境變量
sudo gedit /etc/profile
在打開的文件中的末尾添加這些東西
#set jdk environment
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
輸入 java -version
可以看到java的相關信息了。