前言
開發中很多需要javac 的程序依賴 JAVA_HOME環境變量.
如果是手工下載源碼安裝的JDK,很容易知道JAVA_HOME的目錄. 例如
1
|
whereis javac |
1
|
javac: /usr/local/jdk1.8.0_74/bin/javac |
那么對應的 JAVA_HOME 為 /usr/local/jdk1.8.0_74.
而 YUM 安裝的 jdk, 不需要配置 PATH, 因為已經自動使用軟連接做好了。
1
2
|
echo $PATH javac -version |
1. YUM安裝JDK
1.1 查找 可用的JDK
1
|
sudo yum list -y java* |
然后可用看到類似下面這樣的輸出(省略部分…):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
... Available Packages java- 1.7 . 0 -openjdk.x86_64 java- 1.7 . 0 -openjdk-demo.x86_64 java- 1.7 . 0 -openjdk-devel.x86_64 java- 1.7 . 0 -openjdk-javadoc.noarch java- 1.7 . 0 -openjdk-src.x86_64 java- 1.8 . 0 -openjdk.x86_64 java- 1.8 . 0 -openjdk-debug.x86_64 java- 1.8 . 0 -openjdk-demo.x86_64 java- 1.8 . 0 -openjdk-demo-debug.x86_64 java- 1.8 . 0 -openjdk-devel.x86_64 java- 1.8 . 0 -openjdk-devel-debug.x86_64 java- 1.8 . 0 -openjdk-headless.x86_64 java- 1.8 . 0 -openjdk-headless-debug.x86_64 java- 1.8 . 0 -openjdk-javadoc.noarch java- 1.8 . 0 -openjdk-javadoc-debug.noarch java- 1.8 . 0 -openjdk-src.x86_64 java- 1.8 . 0 -openjdk-src-debug.x86_64 |
根據需要, 安裝 JDK1.7 或者 JDK1.8, 當前1.8已經很穩定了,推薦JDK1.8
1.2 安裝 JDK
安裝 JDK1.7 的命令如下:
1
|
sudo yum install -y java-1.7.0-openjdk* |
安裝 JDK1.8 的命令如下:
1
|
sudo yum install -y java-1.8.0-openjdk* |
2. 查找 JDK1.7 的 JAVA_HOME
2.1 查找 javac :
1
|
whereis javac |
1
|
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz |
可以看到, /usr/bin/javac, 一般來說 /usr/bin 默認加入了 PATH 路徑,所以可以直接執行.
然后一路跟蹤,看軟連接指向的位置( ll 是 ls -l 的快捷命令):
1
|
ll /usr/bin/javac |
1
|
… /usr/bin/javac -> /etc/alternatives/javac |
然后繼續:
1
|
ll /etc/alternatives/javac |
JDK1.7 大致是這個樣子:
1
|
… /etc/alternatives/javac -> /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac |
再繼續:
1
|
ll /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/javac |
不再是軟連接。 結合這個地址可以分析得到, JAVA_HOME 的值應該是 /usr/lib/jvm/java-1.7.0-openjdk.x86_64。
當然,使用這個地址就可以了!
如果繼續下一步查看,可以看到具體的版本號:
1
|
ll /usr/lib/jvm/java-1.7.0-openjdk.x86_64 |
1
|
… /usr/lib/jvm/java-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.79.x86_64 |
使用下面的命令即可看到真實的目錄, 但一般不使用下面的具體版本號,升級什么的可能會出問題。
1
|
ll /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64 |
具體內容類似下面這樣:
1
|
ll /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64 |
1
2
3
4
5
6
7
8
9
10
11
12
|
total 43952 -r--r--r-- 1 root root 1503 Apr 15 2015 ASSEMBLY_EXCEPTION drwxr-xr-x 2 root root 4096 Dec 25 2015 bin drwxr-xr-x 10 root root 4096 May 2 2015 demo drwxr-xr-x 3 root root 4096 May 2 2015 include drwxr-xr-x 4 root root 4096 May 2 2015 jre drwxr-xr-x 3 root root 4096 May 3 2015 lib -r--r--r-- 1 root root 19263 Apr 15 2015 LICENSE drwxr-xr-x 8 root root 4096 May 2 2015 sample -rw-r--r-- 1 root root 44775741 Apr 15 2015 src.zip drwxr-xr-x 2 root root 4096 May 2 2015 tapset -r--r--r-- 1 root root 172264 Apr 15 2015 THIRD_PARTY_README |
2.2 將 JAVA_HOME 加入環境變量:
1
|
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64 |
當然, export 只是臨時的。下次重啟后就沒了。
可以添加到rc文件,比如 /etc/rc.d/rc.local 之中。
當然,可以使用 vim 編輯, 或者是 echo >> 命令
1
2
3
4
|
jhometip='# add JAVA_HOME' jhomescript='export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64' sudo echo $jhometip >> /etc/rc.d/rc.local sudo echo $jhomescript >> /etc/rc.d/rc.local |
這樣一般就設置好了。
3. 查找 JDK1.8 的 JAVA_HOME
3.1 查找 javac :
1
|
whereis javac |
1
|
javac: /usr/bin/javac /usr/share/man/man1/javac.1.gz |
可以看到, /usr/bin/javac, 一般來說 /usr/bin 默認加入了 PATH 路徑,所以可以直接執行.
然后一路跟蹤,看軟連接指向的位置( ll 是 ls -l 的快捷命令):
1
|
ll /usr/bin/javac |
1
|
… /usr/bin/javac -> /etc/alternatives/javac |
然后繼續:
1
|
ll /etc/alternatives/javac |
JDK1.8 大致是這個樣子:
1
2
3
|
… /etc/alternatives/javac -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/bin/javac |
再繼續:
1
|
ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64/bin/javac |
不再是軟連接。 結合這個地址可以分析得到, JAVA_HOME 的值應該是 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64。
使用這個地址就可以了!
如果繼續下一步查看:
1
|
ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64 |
具體內容類似下面這樣:
1
2
3
4
5
6
|
total 16 drwxr-xr-x. 2 root root 4096 Sep 21 23:08 bin drwxr-xr-x. 3 root root 4096 Sep 21 23:08 include drwxr-xr-x. 4 root root 26 Sep 21 23:08 jre drwxr-xr-x. 3 root root 4096 Sep 21 23:08 lib drwxr-xr-x. 2 root root 4096 Sep 21 23:08 tapset |
3.2 查看軟連接:
查看 jvm 目錄:
1
|
ll /usr/lib/jvm |
則可以看到很多軟連接:
1
2
3
4
5
6
7
8
|
java -> /etc/alternatives/java_sdk java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64 java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64-debug java-openjdk -> /etc/alternatives/java_sdk_openjdk jre -> /etc/alternatives/jre jre-1.8.0 -> /etc/alternatives/jre_1.8.0 |
類似這樣的,不管 jre 開頭的部分,可以看到 /etc/alternatives/java_sdk_1.8.0 這樣的目錄;
執行 :
1
2
|
ll /etc/alternatives/java_sdk_1.8.0 ll /etc/alternatives/java_sdk |
然后發現, 這一堆鏈接都是指向上面的 JAVA_HOME 路徑:
1
2
|
/etc/alternatives/java_sdk_1.8.0 -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64 |
所以,可以使用其中之一作為 JAVA_HOME 環境變量的值。
說明: 既然安裝了,基本上服務器上就不會頻繁變更. 如果有變更,則查找并修正即可。
3.3 將 JAVA_HOME 加入環境變量:
1
|
export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0 |
當然, export 只是臨時的。下次重啟后就沒了。
可以添加到rc文件,比如 /etc/rc.d/rc.local 之中。
當然,可以使用 vim 編輯, 或者是 echo >> 命令
1
2
3
4
|
jhometip='# add JAVA_HOME' jhomescript='export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0' sudo echo $jhometip >> /etc/rc.d/rc.local sudo echo $jhomescript >> /etc/rc.d/rc.local |
這樣一般就設置好了。
最后如果Java中設置JAVA_HOME無效可以參考:http://www.ythuaji.com.cn/article/126012.html
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://blog.csdn.net/renfufei/article/details/52621034