先了解下概念:
jdk(java development kit),就是java的開發工具集,顧名思義就是做開發用的,其中包括javac,也就是java compiler等。
jre(java runtime environment),就是java程序的運行環境。所寫的java程序在經過javac編譯后會形成字符行文件,這個java的中間文件,計算機是看不懂的,而這個文件是給jvm(java的虛擬機)用的,由jvm進行解釋后形成機器語言給計算機。而這個jvm就在jre中,也就是說java程序的運行要有jre來擔當。
所以jdk和jre的區別就是一個用於開發,一個用於運行,聯系就是它們都是java開發者所必備的。
JDK > JRE,也就是說JDK已經包含了JRE,安裝JDK時候如果沒有JRE,會自動安上
ubuntu本地安裝東西的時候,老是會遇到:
download failed Oracle JDK 7 is NOT installed. dpkg: error processing oracle-java7-installer (--configure): subprocess installed post-installation script returned error exit status 1
去官網看,不再支持6和7了:
安裝ORACLE JAVA 8
INSTALL ORACLE JAVA 8 IN UBUNTU OR LINUX MINT VIA PPA REPOSITORY [JDK8]
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
ok
dahu@dahu-OptiPlex-3046:~$ java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
如果還不是,可能本地裝了其他版本的java,
查看java程序的安裝位置:
dahu@dahu-OptiPlex-3046:~$ whereis java java: /usr/bin/java /usr/share/java /opt/jdk1.8.0_72/bin/java /usr/lib/jvm/java-8-oracle/bin/java /usr/lib/jvm/java-8-oracle/jre/bin/java /usr/share/man/man1/java.1.gz
查看環境變量位置,如果出錯,可能是環境變量里,先放的位置的java程序被執行了,如下,/usr/local/jvm/jdk8/bin 這里的java先被執行了,而我剛剛裝的/usr/lib/jvm/java-8-oracle/bin在后面,這也是排查錯誤的一個方式
dahu@dahu-OptiPlex-3046:~$ echo $PATH /usr/local/jvm/jdk8/bin:/home/dahu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
也可以查看看.bashrc文件,設置javahome位置
dahu@dahu-OptiPlex-3046:~$ tail -n3 ~/.bashrc export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
安裝openjdk
這個並不能解決開頭的錯誤,只是裝另一個jdk而已,參考的是給力星hadoop的安裝教程
Java環境可選擇 Oracle 的 JDK,或是 OpenJDK,按http://wiki.apache.org/hadoop/HadoopJavaVersions中說的,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。
sudo apt-get install openjdk-7-jre openjdk-7-jdk
安裝好 OpenJDK 后,需要找到相應的安裝路徑,這個路徑是用於配置 JAVA_HOME 環境變量的。執行如下命令:
dpkg -L openjdk-7-jdk | grep '/bin/javac'
該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是正確的路徑了。如輸出路徑為 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,則我們需要的路徑為 /usr/lib/jvm/java-7-openjdk-amd64。
接着配置 JAVA_HOME 環境變量,為方便,我們在 ~/.bashrc 中進行設置(擴展閱讀: 設置Linux環境變量的方法和區別):
vim ~/.bashrc
在文件最前面添加如下單獨一行(注意 = 號前后不能有空格),將“JDK安裝路徑”改為上述命令得到的路徑,並保存:
如下圖所示(該文件原本可能不存在,內容為空,這不影響):
配置JAVA_HOME變量
接着還需要讓該環境變量生效,執行如下代碼:
source ~/.bashrc # 使變量設置生效
設置好后我們來檢驗一下是否設置正確:
如果設置正確的話,$JAVA_HOME/bin/java -version
會輸出 java 的版本信息,且和 java -version
的輸出結果一樣,如下圖所示:
成功配置JAVA_HOME變量