前面有一篇《環(huán)境變量詳解》介紹了 Windows 和 Linux 系統(tǒng)下的環(huán)境變量炕淮,這里介紹一下 Java 的安裝及其環(huán)境變量配置跨嘉。
Windows 下安裝 Java
到 Oracle 官網(wǎng)上下載 JDK 的 Windows 版安裝文件(下載時(shí)需要同意協(xié)議并登錄 Oracle 賬號),我下載的是 jdk-8u311-windows-x64.exe
驹饺。
下載完成之后雙擊 exe 文件,然后按照安裝向?qū)б徊讲较蛳曼c(diǎn)擊就可以了缴渊。
Windows 下配置 Java 環(huán)境變量
步驟如下:
- JDK 安裝完畢后需要設(shè)置 JAVA 環(huán)境變量赏壹。先將 JDK 主目錄添加到 JAVA_HOME 環(huán)境變量:
看到這里你可能會有這樣的疑問:為什么安裝到了 C 盤而不是其他盤,難道不怕影響系統(tǒng)性能嗎衔沼?哥的 C 盤是固態(tài)硬盤蝌借,安裝到其他盤反而會發(fā)揮不出固態(tài)硬盤的性能(SSD 黨在這里驕(zhuang)傲(bi)三秒鐘,哈哈)指蚁,為什么不是
Program files
默認(rèn)目錄呢菩佑?因?yàn)橄到y(tǒng)默認(rèn)目錄可能會有寫權(quán)限的限制,我就把所有開發(fā)相關(guān)的軟件統(tǒng)一安裝到了一個(gè)自定義目錄 softwares 中了凝化。
- 然后在將 JDK 的 bin 目錄添加到 Path 環(huán)境變量中.選中用戶的 Path 環(huán)境變量稍坯,選擇
編輯
按鈕,在彈出的對話框中搓劫,點(diǎn)擊新建
按鈕瞧哟,將%JAVA_HOME%
目錄添加到 Path中:
-
驗(yàn)證混巧。在命令行中輸入
java --version
命令,可以看到如下提示說明環(huán)境變量設(shè)置成功并生效:C:\Users\vincent>java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.311-b01, mixed mode)
神馬勤揩?明明設(shè)置了環(huán)境變量但是提示找不到 java 命令咧党,那試試簽名介紹的如何刷新 Windows 下的環(huán)境變量設(shè)置吧。
你可能從網(wǎng)上看到過 Java 還需要配置 CLASSPATH 環(huán)境變量的雄可,該環(huán)境變量主要用來告知 JRE 去哪里尋找所要運(yùn)行的 .class 文件(可能在一個(gè) jar 包中)凿傅,這個(gè)環(huán)境變量通常設(shè)置為:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
其中,.
表示當(dāng)前目錄数苫,dt.jar
和 tools.jar
包含編譯和運(yùn)行java程序的 .class 文件聪舒。其實(shí)從 JDK 1.5 開始,JRE會自動搜索當(dāng)前目錄下的 .class 文件虐急,當(dāng)使用 Java 的編譯和運(yùn)行工具是箱残,系統(tǒng)會自動加載dt.jar
和 tools.jar
中包含的 .class 文件。所以止吁,從 JDK 1.5 開始 CLASSPATH 環(huán)境變量就不需要設(shè)置了被辑,但是,只要設(shè)置了就必須設(shè)置為上面的值敬惦,否則編譯或運(yùn)行 Java 程序就會出錯(cuò)盼理。
Linux 下安裝 Java
通過 rpm 文件安裝
到 Oracle 官網(wǎng)上下載 JDK 安裝文件(下載時(shí)可能需要登錄 Oracle 賬號),我下載的為:jdk-8u311-linux-x64.rpm
俄删。這種方式會自動創(chuàng)建一些可能被其他基于 Java 程序所使用的鏈接文件宏怔,建議使用這種方式安裝。
下載完 rpm 文件之后使用 FTP 工具將 jdk-8u311-linux-x64.rpm
安裝文件上傳至 Linux 的某個(gè)用戶目錄中(我這里為 /home/tomcat 目錄)畴椰,然后安裝 jdk-8u311-linux-x64.rpm
臊诊。如下所示。
[root@localhost tomcat]# yum localinstall jdk-8u311-linux-x64.rpm
# 安裝完成之后使用 java -version 命令可以看到版本號
[root@localhost ~]# java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
# 執(zhí)行 echo $JAVA_HOME 命令輸出為空斜脂,因?yàn)榇藭r(shí)并未設(shè)置 JAVA_HOME 環(huán)境變量
[root@localhost tomcat]# echo $JAVA_HOME
# 未設(shè)置環(huán)境變量為什么也能執(zhí)行 java -version 命令呢抓艳,我們通過執(zhí)行 whereis java 發(fā)現(xiàn)這種安裝方式創(chuàng)
# 建了一個(gè)最終鏈接到 /usr/java/jdk1.8.0_311-amd64/bin/java 可執(zhí)行文件的鏈接文件 /usr/bin/java,
# 而位于 /usr/bin 目錄下的可執(zhí)行文件會被默認(rèn)查找
[root@localhost tomcat]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1
[root@localhost tomcat]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 10月 30 10:18 /usr/bin/java -> /etc/alternatives/java
[root@localhost tomcat]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 37 10月 30 10:18 /etc/alternatives/java -> /usr/java/jdk1.8.0_311-amd64/bin/java
[root@localhost tomcat]# ll /usr/java/jdk1.8.0_311-amd64/bin/java
-rwxr-xr-x. 1 root root 8712 9月 27 20:26 /usr/java/jdk1.8.0_311-amd64/bin/java
# JDK 默認(rèn)安裝到了 /usr/java 目錄下
[root@localhost tomcat]# ll /usr/java/jdk1.8.0_311-amd64
總用量 25812
drwxr-xr-x. 2 root root 4096 10月 30 10:18 bin
-rw-r--r--. 1 root root 3244 9月 27 20:26 COPYRIGHT
drwxr-xr-x. 3 root root 132 10月 30 10:18 include
-rw-r--r--. 1 root root 5235749 9月 27 17:16 javafx-src.zip
-rw-r--r--. 1 root root 195 9月 27 20:26 jmc.txt
drwxr-xr-x. 6 root root 198 10月 30 10:18 jre
drwxr-xr-x. 4 root root 31 10月 30 10:18 legal
drwxr-xr-x. 4 root root 223 10月 30 10:18 lib
-rw-r--r--. 1 root root 44 9月 27 20:26 LICENSE
drwxr-xr-x. 4 root root 47 10月 30 10:18 man
-rw-r--r--. 1 root root 159 9月 27 20:26 README.html
-rw-r--r--. 1 root root 486 9月 27 20:26 release
-rw-r--r--. 1 root root 21158373 9月 27 20:26 src.zip
-rw-r--r--. 1 root root 190 9月 27 17:16 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r--. 1 root root 190 9月 27 20:26 THIRDPARTYLICENSEREADME.txt
# 可以查看一下安裝包的信息
[root@localhost tomcat]# rpm -qa | grep jdk1.8*
jdk1.8-1.8.0_311-fcs.x86_64
[root@localhost ~]# rpm -qlicdR jdk1.8-1.8.0_311-fcs.x86_64
Name : jdk1.8
Epoch : 2000
Version : 1.8.0_311
Release : fcs
Architecture: x86_64
Install Date: 2021年10月30日 星期六 10時(shí)18分18秒
Group : Development/Tools
Size : 269439310
License : https://java.com/otnlicense
Signature : RSA/SHA256, 2021年09月27日 星期一 20時(shí)58分24秒, Key ID 72f97b74ec551f03
Source RPM : jdk1.8-1.8.0_311-fcs.src.rpm
Build Date : 2021年09月27日 星期一 20時(shí)33分16秒
Build Host : java.com
Relocations : /usr/java
Vendor : Oracle Corporation
URL : http://www.oracle.com/technetwork/java/javase/overview/index.html
Summary : Java Platform Standard Edition Development Kit
Description :
The Java Platform Standard Edition Development Kit (JDK) includes both
the runtime environment (Java virtual machine, the Java platform classes
and supporting files) and development tools (compilers, debuggers,
tool libraries and other tools).
The JDK is a development environment for building applications, applets
and components that can be deployed with the Java Platform Standard
Edition Runtime Environment.
/bin/basename
/bin/cat
/bin/cp
/bin/gawk
/bin/grep
/bin/ln
/bin/ls
/bin/mkdir
/bin/mv
/bin/pwd
/bin/rm
/bin/sed
/bin/sort
/bin/touch
/usr/bin/cut
/usr/bin/dirname
/usr/bin/expr
/usr/bin/find
/usr/bin/tail
/usr/bin/tr
/usr/bin/wc
/bin/sh
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1
通過 .tar.gz 文件安裝
當(dāng)然也可以下載 .tar.gz 格式的 JDK 安裝文件帚戳,我下載的是 jdk-8u311-linux-x64.tar.gz
玷或。下載完 tar.gz 文件之后使用 FTP 工具將 jdk-8u311-linux-x64.tar.gz
安裝文件上傳至 Linux 的某個(gè)用戶目錄中,然后解壓 jdk-8u311-linux-x64.tar.gz
文件片任,并將解壓后的目錄復(fù)制到 /usr/java/
目標(biāo)安裝目錄(最好跟 rpm 安裝方式的安裝位置相同)下偏友。如下所示。
[root@localhost tomcat]# tar -xzvf jdk-8u311-linux-x64.tar.gz
[root@localhost tomcat]# ll
總用量 255976
drwxr-xr-x. 8 10143 10143 273 9月 27 20:29 jdk1.8.0_311
-rw-r--r--. 1 root root 146799982 10月 30 11:16 jdk-8u311-linux-x64.tar.gz
[root@localhost tomcat]# cp -r jdk1.8.0_311 /usr/java/
這種安裝方式在某些時(shí)候可能需要手動創(chuàng)建一些鏈接文件才可以運(yùn)行基于 Java 的程序蚂踊,比如 Jenkins 啟動時(shí)會自動查找 /usr/bin/java
文件并將其作為可執(zhí)行的 java 文件约谈,這時(shí)需要使用 ln -s
命令手動創(chuàng)建 /usr/bin/java
符號鏈接文件,將其鏈接到目標(biāo)安裝目錄中的 java
可執(zhí)行文件。如下所示棱诱。
[root@localhost bin]# ln -s /usr/java/jdk1.8.0_311-amd64/bin/java /usr/bin/java
[root@localhost bin]# /usr/bin/java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
需要時(shí)再創(chuàng)建上述符號鏈接文件也可以泼橘。
Linux 下配置 Java 環(huán)境變量
-
設(shè)置系統(tǒng)環(huán)境變量。通過 rpm 文件的方式不顯式設(shè)置
JAVA_HOME
環(huán)境變量就可以直接運(yùn)行java
可執(zhí)行文件迈勋,那么不設(shè)置JAVA_HOME
環(huán)境變量是不是就可以了呢炬灭?其實(shí)不然,許多基于 Java 的程序靡菇,比如 Ant重归、Maven、Tomcat 等啟動時(shí)都會查找并使用JAVA_HOME
環(huán)境變量的值厦凤。所以設(shè)置JAVA_HOME
環(huán)境變量是非常有必要的鼻吮,如果通過解壓 tar.gz 壓縮歸檔文件的方式安裝 JDK 就更要設(shè)置JAVA_HOME
環(huán)境變量了,否則根本無法隨處運(yùn)行java
可執(zhí)行文件较鼓。使用
sudo vim /etc/profile.d/jdk_env.sh
命令新建一個(gè)sh
文件椎木,并配置以下環(huán)境變量:# Oracel Java Environment Variable Configuration Start export JAVA_HOME=/usr/java/jdk1.8.0_311-amd64 # CLASSPATH is not necessary since JDK 1.5 #export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin # Oracel Java Environment Variable Configuration End
使用 vim 保存后,可以執(zhí)行
cat /etc/profile.d/jdk_env.sh
查看一下配置是否正確博烂。 -
更新環(huán)境變量香椎。修改完成后,使用
sudo source /etc/profile
命令進(jìn)行更新(/etc/profile
文件會讀取/etc/profile.d/jdk_home.sh
中的配置)禽篱。如果該命令操作失敗畜伐,提示權(quán)限不足,那么將$JAVA_HOME/lib/dt.jar
和$JAVA_HOME/lib/tools.jar
這兩個(gè)文件的權(quán)限修改為可執(zhí)行躺率,然后重新執(zhí)行sudo source /etc/profile
命令:[root@localhost jdk1.8.0_311-amd64]# source /etc/profile -bash: /usr/java/jdk1.8.0_311-amd64/lib/tools.jar: Permission denied [root@localhost tomcat]# cd /usr/java/jdk1.8.0_311-amd64/lib [root@localhost lib]# ll total 39780 drwxr-xr-x. 3 root root 4096 May 23 21:03 amd64 -rw-r--r--. 1 root root 1218653 Mar 29 08:21 ant-javafx.jar -rw-r--r--. 1 root root 18229876 Mar 29 08:15 ct.sym -rw-r--r--. 1 root root 159870 Mar 29 08:21 dt.jar -rw-r--r--. 1 root root 18432 Mar 29 08:15 ir.idl -rw-r--r--. 1 root root 35992 Mar 29 08:23 javafx-mx.jar -rw-r--r--. 1 root root 404452 Mar 29 08:21 jconsole.jar -rwxr-xr-x. 1 root root 10493 Mar 29 08:21 jexec drwxr-xr-x. 7 root root 4096 May 23 21:03 missioncontrol -rw-r--r--. 1 root root 640 Mar 29 08:15 orb.idl -rw-r--r--. 1 root root 4633 Mar 29 08:23 packager.jar -rw-r--r--. 1 root root 2381736 Mar 29 08:21 sa-jdi.jar -rw-r--r--. 1 root root 18233649 May 23 21:03 tools.jar drwxr-xr-x. 6 root root 4096 May 23 21:03 visualvm [root@localhost lib]# chmod 751 dt.jar [root@localhost lib]# chmod 751 tools.jar [root@localhost lib]# ll total 39780 -wxr-xr-x. 3 root root 4096 May 23 21:03 amd64 -rw-r--r--. 1 root root 1218653 Mar 29 08:21 ant-javafx.jar -rw-r--r--. 1 root root 18229876 Mar 29 08:15 ct.sym -rwxr-x--x. 1 root root 159870 Mar 29 08:21 dt.jar -rw-r--r--. 1 root root 18432 Mar 29 08:15 ir.idl -rw-r--r--. 1 root root 35992 Mar 29 08:23 javafx-mx.jar -rw-r--r--. 1 root root 404452 Mar 29 08:21 jconsole.jar -rwxr-xr-x. 1 root root 10493 Mar 29 08:21 jexec drwxr-xr-x. 7 root root 4096 May 23 21:03 missioncontrol -rw-r--r--. 1 root root 640 Mar 29 08:15 orb.idl -rw-r--r--. 1 root root 4633 Mar 29 08:23 packager.jar -rw-r--r--. 1 root root 2381736 Mar 29 08:21 sa-jdi.jar -rwxr-x--x. 1 root root 18233649 May 23 21:03 tools.jar drwxr-xr-x. 6 root root 4096 May 23 21:03 visualvm [root@localhost jdk1.8.0_171-amd64]# source /etc/profile
卸載 Open JDK
有的 Linux 系統(tǒng)中預(yù)裝了 Open JDK玛界,所以即使上面進(jìn)行了上面這些步驟,可能系統(tǒng)默認(rèn)的 JDK 還不是 Oracle JDK肥照,如果要真正使用 Oracle JDK脚仔,可以選擇卸載 Open JDK:
[root@localhost ~]# rpm -qa | grep openjdk
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-headless
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless
[root@localhost ~]# rpm -qa | grep openjdk
[root@localhost ~]#
確定 Open JDK 已經(jīng)完全卸載了勤众,然后就可以為 Oracle JDK 設(shè)置環(huán)境變量了舆绎。當(dāng)然,也可以不卸載 Open JDK 而直接安裝 Oracle JDK们颜,然后為 Oracle JDK 設(shè)置環(huán)境變量就行了吕朵。
使用 java -version
命令來查看我們的 java 環(huán)境變量,顯示如下版本信息說明大功告成:
[root@localhost tomcat]# echo $JAVA_HOME
/usr/java/jdk1.8.0_171-amd64
[root@localhost tomcat]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
[root@localhost tomcat]# javac -version
javac 1.8.0_171
[root@localhost tomcat]#