Ubuntu解決java/lang/NoClassDefFoundError錯誤?

Tags: 問題, 錯誤,

筆者在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軟件包。)

Ubuntu解決java/lang/NoClassDefFoundError錯誤

輸入 sudo alien /usr/zm/QtForAndr/jdk-7u79-linux-i586.rpm

等待,直到可以再輸入命令的時候,就表示rpm已成功轉化為deb軟件包。

(我的rpn是放置在自定義文件夾QtForAndr文件夾下的)

Ubuntu解決java/lang/NoClassDefFoundError錯誤

輸入 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

Ubuntu解決java/lang/NoClassDefFoundError錯誤

Ubuntu解決java/lang/NoClassDefFoundError錯誤

修改環境變量

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

Ubuntu解決java/lang/NoClassDefFoundError錯誤

輸入 java -version

可以看到java的相關信息了。

Ubuntu解決java/lang/NoClassDefFoundError錯誤

相關問題答案