詳解Java安裝及環(huán)境變量配置(Windows&Linux)

前面有一篇《環(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驹饺。

image-20211030114604827.png

下載完成之后雙擊 exe 文件,然后按照安裝向?qū)б徊讲较蛳曼c(diǎn)擊就可以了缴渊。

Windows 下配置 Java 環(huán)境變量

步驟如下:

  1. JDK 安裝完畢后需要設(shè)置 JAVA 環(huán)境變量赏壹。先將 JDK 主目錄添加到 JAVA_HOME 環(huán)境變量:
image-20211030115236423.png

看到這里你可能會有這樣的疑問:為什么安裝到了 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 中了凝化。

  1. 然后在將 JDK 的 bin 目錄添加到 Path 環(huán)境變量中.選中用戶的 Path 環(huán)境變量稍坯,選擇編輯按鈕,在彈出的對話框中搓劫,點(diǎn)擊新建按鈕瞧哟,將 %JAVA_HOME% 目錄添加到 Path中:
TIM截圖20171022112309.png
  1. 驗(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.jartools.jar 包含編譯和運(yùn)行java程序的 .class 文件聪舒。其實(shí)從 JDK 1.5 開始,JRE會自動搜索當(dāng)前目錄下的 .class 文件虐急,當(dāng)使用 Java 的編譯和運(yùn)行工具是箱残,系統(tǒng)會自動加載dt.jartools.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 程序所使用的鏈接文件宏怔,建議使用這種方式安裝。

image.png

下載完 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)境變量

  1. 設(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 查看一下配置是否正確博烂。

  2. 更新環(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]# 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窥突,一起剝皮案震驚了整個(gè)濱河市努溃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阻问,老刑警劉巖梧税,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡第队,警方通過查閱死者的電腦和手機(jī)哮塞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凳谦,“玉大人忆畅,你說我怎么就攤上這事∈矗” “怎么了家凯?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長如失。 經(jīng)常有香客問我绊诲,道長,這世上最難降的妖魔是什么褪贵? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任驯镊,我火速辦了婚禮,結(jié)果婚禮上竭鞍,老公的妹妹穿的比我還像新娘板惑。我一直安慰自己,他們只是感情好偎快,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布冯乘。 她就那樣靜靜地躺著,像睡著了一般晒夹。 火紅的嫁衣襯著肌膚如雪裆馒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天丐怯,我揣著相機(jī)與錄音喷好,去河邊找鬼。 笑死读跷,一個(gè)胖子當(dāng)著我的面吹牛梗搅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播效览,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼无切,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丐枉?” 一聲冷哼從身側(cè)響起哆键,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘦锹,沒想到半個(gè)月后籍嘹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闪盔,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年辱士,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锭沟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡识补,死狀恐怖族淮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凭涂,我是刑警寧澤祝辣,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站切油,受9級特大地震影響蝙斜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜澎胡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一孕荠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧攻谁,春花似錦稚伍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贩绕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工猴贰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人河狐。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓米绕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甚牲。 傳聞我的和親對象是個(gè)殘疾皇子义郑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345