最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux手動(dòng)部署Oracle JDK 17的完全指南

 更新時(shí)間:2026年05月31日 09:11:19   作者:Java小白筆記  
本文手把手教你在 Linux 系統(tǒng)上通過官方 tar.gz 壓縮包手動(dòng)安裝 Oracle JDK 17,涵蓋舊版清理、下載解壓、環(huán)境變量配置、多版本管理及常見問題排查,適用于 Ubuntu / CentOS / Debian 等主流發(fā)行版,需要的朋友可以參考下

一、為什么選擇手動(dòng)安裝?

在 Linux 上安裝 Java 開發(fā)工具包(JDK)有多種方式:

方式命令示例優(yōu)點(diǎn)缺點(diǎn)
包管理器安裝apt install openjdk-17-jdk一鍵安裝,自動(dòng)處理依賴版本固定,通常是 OpenJDK
SDKMAN 管理sdk install java 17多版本切換方便需要額外工具鏈
手動(dòng) tar.gz 安裝本文方法版本精確可控,Oracle 官方原版需手動(dòng)配置

手動(dòng)安裝的核心優(yōu)勢(shì):

  1. 版本精確 — 可以安裝 Oracle JDK 的任意小版本(如 17.0.12)
  2. 環(huán)境純凈 — 不會(huì)和系統(tǒng)包管理器的 OpenJDK 產(chǎn)生沖突
  3. 可移植性高 — 配置腳本可以直接復(fù)用到 CI/CD 流水線或 Docker 鏡像中

二、環(huán)境準(zhǔn)備

2.1 確認(rèn)系統(tǒng)信息

安裝前先了解當(dāng)前系統(tǒng)的架構(gòu)和版本,確保下載正確的安裝包。

# 查看 CPU 架構(gòu)(x86_64 或 aarch64)
uname -m

# 查看操作系統(tǒng)版本
cat /etc/os-release

# 查看當(dāng)前是否已安裝 Java
java -version 2>&1 || echo "未安裝 Java"

輸出示例:

x86_64
PRETTY_NAME="Ubuntu 22.04.3 LTS"
openjdk version "11.0.21" 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-Ubuntu-0ubuntu122.04, mixed mode, sharing)

上面輸出一臺(tái)典型的 Ubuntu 22.04 服務(wù)器,已預(yù)裝 OpenJDK 11,CPU 為 x86_64 架構(gòu)。

2.2 檢查磁盤空間

JDK 17 完整安裝大約占用 300MB ~ 400MB 磁盤空間。

df -h /opt

確保 /opt 或你打算安裝的目錄至少有 1GB 可用空間。

三、清理殘留的 Java 環(huán)境

如果你的系統(tǒng)中已經(jīng)存在舊版 Java(OpenJDK 或其他版本的 JDK),建議先徹底清理,避免路徑?jīng)_突。

3.1 查找已安裝的 Java 包

# Ubuntu / Debian 系
dpkg -l | grep -i java

# CentOS / RHEL 系
rpm -qa | grep -i java

3.2 卸載舊版 Java

# Ubuntu / Debian 系
sudo apt-get remove --purge openjdk-*
sudo apt-get autoremove

# CentOS / RHEL 系
sudo yum remove java-11-openjdk*
sudo yum remove java-1.8.0-openjdk*

3.3 清理殘留文件

有時(shí)包管理器卸載后會(huì)殘留配置文件或軟鏈接:

# 查找可能殘留的 Java 相關(guān)文件
sudo find /usr/lib/jvm -name "*java*" 2>/dev/null
sudo find /etc -name "*java*" 2>/dev/null

# 確認(rèn)無誤后清理(?? 謹(jǐn)慎操作!務(wù)必核對(duì)路徑)
sudo rm -rf /usr/lib/jvm/java-*
sudo rm -f /etc/profile.d/jdk.sh

危險(xiǎn)警告:執(zhí)行 rm 命令前務(wù)必用 find 確認(rèn)路徑正確!誤刪系統(tǒng)組件可能導(dǎo)致系統(tǒng)異常。不確定時(shí)跳過此步,直接覆蓋安裝即可。

3.4 清除舊的環(huán)境變量

檢查并清理 ~/.bashrc~/.zshrc、/etc/profile 中關(guān)于 JAVA_HOME 的配置行:

# 查看包含 JAVA_HOME 的行
grep -n "JAVA_HOME" ~/.bashrc ~/.zshrc /etc/profile 2>/dev/null

如果有殘留行,先注釋掉或刪除,等安裝完成后再統(tǒng)一配置。

四、下載 Oracle JDK 17

4.1 獲取下載鏈接

訪問 Oracle Java 下載頁面,找到 JDK 17 LTS 版本。

版本注意

  • 17.0.12 及更早版本:可直接下載,無需登錄
  • 17.0.13 及更新版本:需要 Oracle 賬號(hào)并同意 OTN 許可協(xié)議
  • 歸檔版本查看:Java SE 17 Archive Downloads

4.2 使用 wget 命令行下載

# x86_64 架構(gòu)(最常見)
wget --no-cookie --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" \
     "https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz"

# aarch64 / ARM 架構(gòu)
wget --no-cookie --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" \
     "https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.tar.gz"

--no-check-certificate 用于跳過 SSL 證書驗(yàn)證(某些內(nèi)網(wǎng)環(huán)境需要),--header 用于自動(dòng)接受許可協(xié)議。

4.3 驗(yàn)證下載完整性

# 查看文件大?。ㄕ?yīng)在 190MB 左右)
ls -lh jdk-17_linux-x64_bin.tar.gz

# 計(jì)算 MD5 校驗(yàn)值,與官網(wǎng)提供的進(jìn)行比對(duì)
md5sum jdk-17_linux-x64_bin.tar.gz

五、解壓安裝

5.1 選擇安裝位置

Linux 系統(tǒng)常用的 Java 安裝位置有:

位置適用場(chǎng)景權(quán)限要求
/opt/java/推薦,獨(dú)立管理root
/usr/lib/jvm/傳統(tǒng)位置,兼容性好root
/usr/local/本地編譯安裝root

本文以 /opt/java/ 為例:

# 創(chuàng)建安裝目錄
sudo mkdir -p /opt/java

# 移動(dòng)安裝包到安裝目錄
sudo mv jdk-17_linux-x64_bin.tar.gz /opt/java/

# 進(jìn)入安裝目錄
cd /opt/java

5.2 解壓 tar.gz 包

# 解壓(會(huì)自動(dòng)創(chuàng)建 jdk-17.0.x 子目錄)
sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz

# 查看解壓結(jié)果
ls -la /opt/java/

典型輸出:

drwxr-xr-x  13 root root   4096 May 15 10:30 jdk-17.0.12
-rw-r--r--   1 root root 198M May 15 10:28 jdk-17_linux-x64_bin.tar.gz

5.3 清理安裝包(可選)

# 解壓完成后可以刪除壓縮包節(jié)省空間
sudo rm jdk-17_linux-x64_bin.tar.gz

5.4 安裝結(jié)果示意

digraph jdk_install {
    rankdir=LR;
    node [shape=box, style=filled, fillcolor="#e8f4f8"];
    
    "tar.gz 壓縮包" -> "tar -zxvf" -> "jdk-17.0.12/ 目錄";
    "jdk-17.0.12/" -> "bin/       [java/javac/jdb]";
    "jdk-17.0.12/" -> "lib/       [核心類庫]";
    "jdk-17.0.12/" -> "jre/       [運(yùn)行時(shí)環(huán)境]";
    "jdk-17.0.12/" -> "conf/      [配置文件]";
}

六、配置環(huán)境變量

這是最關(guān)鍵的一步。環(huán)境變量配置方式有三種,按推薦使用程度排序:

6.1 方式一:/etc/profile.d/(推薦)

這種方式只影響 Java 相關(guān)配置,不會(huì)污染主配置文件,且對(duì)所有用戶生效。

# 創(chuàng)建獨(dú)立的 Java 配置文件
sudo vim /etc/profile.d/jdk.sh

寫入以下內(nèi)容:

# Oracle JDK 17 環(huán)境變量配置
export JAVA_HOME=/opt/java/jdk-17.0.12
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

重要:請(qǐng)將 /opt/java/jdk-17.0.12 替換為你實(shí)際的解壓目錄名!可以用 ls /opt/java/ 確認(rèn)。

使配置立即生效:

source /etc/profile.d/jdk.sh

6.2 方式二:修改/etc/profile(所有用戶)

sudo vim /etc/profile

在文件末尾追加:

# Oracle JDK 17
export JAVA_HOME=/opt/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
source /etc/profile

6.3 方式三:修改~/.bashrc(僅當(dāng)前用戶)

vim ~/.bashrc

在文件末尾追加:

# Oracle JDK 17
export JAVA_HOME=/opt/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
source ~/.bashrc

6.4 三種方式對(duì)比

對(duì)比項(xiàng)profile.d//etc/profile~/.bashrc
作用范圍所有用戶所有用戶僅當(dāng)前用戶
維護(hù)性優(yōu)秀(獨(dú)立文件)一般(混在主配置中)良好
Shell 兼容bash + zshbash + zshbash + zsh
推薦度????????????

七、驗(yàn)證安裝

7.1 基礎(chǔ)驗(yàn)證

# 檢查 java 命令版本
java -version

# 預(yù)期輸出:
# java version "17.0.12" 2024-07-16 LTS
# Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
# Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)

# 檢查 javac 編譯器版本
javac -version

# 預(yù)期輸出:
# javac 17.0.12

# 確認(rèn) JAVA_HOME 正確設(shè)置
echo $JAVA_HOME

# 預(yù)期輸出:
# /opt/java/jdk-17.0.12

7.2 運(yùn)行測(cè)試程序

創(chuàng)建一個(gè)簡(jiǎn)單的 Java 文件驗(yàn)證編譯和運(yùn)行是否正常:

// 創(chuàng)建測(cè)試文件
cat > Test.java << 'EOF'
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello from JDK " + System.getProperty("java.version"));
        System.out.println("OS: " + System.getProperty("os.name"));
        
        // 測(cè)試 StringJoiner(JDK 17 內(nèi)置 API)
        java.util.StringJoiner sj = new java.util.StringJoiner(", ");
        sj.add("Oracle").add("JDK").add("17");
        System.out.println(sj);
    }
}
EOF

# 編譯
javac Test.java

# 運(yùn)行
java Test

# 預(yù)期輸出:
# Hello from JDK 17.0.12
# OS: Linux
# Oracle, JDK, 17

# 清理測(cè)試文件
rm Test.java Test.class

7.3 驗(yàn)證流程圖

graph LR
    A["source /etc/profile"] --> B["java -version"]
    B --> C{"版本是否為 17?"}
    C -->|"是"| D["javac -version"]
    C -->|"否"| E["檢查 JAVA_HOME 路徑"]
    E --> F["修正環(huán)境變量"]
    F --> B
    D --> G{"版本是否為 17?"}
    G -->|"是"| H["? 安裝成功"]
    G -->|"否"| E

八、多 JDK 版本管理

服務(wù)器上往往需要同時(shí)存在多個(gè) JDK 版本(比如項(xiàng)目 A 用 JDK 8,項(xiàng)目 B 用 JDK 17)。

8.1 使用 update-alternatives 統(tǒng)一管理

# 注冊(cè) JDK 17
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-17.0.12/bin/java 1700
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk-17.0.12/bin/javac 1700
sudo update-alternatives --install /usr/bin/jar jar /opt/java/jdk-17.0.12/bin/jar 1700

# 如果還有 JDK 8,也注冊(cè)進(jìn)去
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-1.8.0/bin/java 1800

# 查看已注冊(cè)的版本列表
sudo update-alternatives --list java

# 交互式切換版本
sudo update-alternatives --config java

# 分別配置 javac 和 jar
sudo update-alternatives --config javac
sudo update-alternatives --config jar

8.2 優(yōu)先級(jí)數(shù)字說明

數(shù)字越大,優(yōu)先級(jí)越高
1700 → JDK 17
1800 → JDK 8

當(dāng)數(shù)字相同時(shí),最后注冊(cè)的版本成為默認(rèn)

8.3 版本切換流程

flowchart TD
    A["需要切換 JDK 版本"] --> B["update-alternatives --config java"]
    B --> C["輸入對(duì)應(yīng)編號(hào)"]
    C --> D["source /etc/profile"]
    D --> E["java -version 驗(yàn)證"]
    E --> F["重啟相關(guān)服務(wù)"]
    
    subgraph 常見場(chǎng)景
        G["部署新項(xiàng)目 → 切到高版本"]
        H["回滾上線 → 切到低版本"]
        I["并行測(cè)試 → 不切換"]
    end
    
    A --> G
    A --> H
    A --> I

8.4 按項(xiàng)目動(dòng)態(tài)切換(進(jìn)階)

不想全局切換時(shí),可以在項(xiàng)目啟動(dòng)腳本中臨時(shí)指定:

#!/bin/bash
# deploy.sh — 項(xiàng)目專屬 JDK

export JAVA_HOME=/opt/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH

echo "使用 ${JAVA_HOME} 啟動(dòng)應(yīng)用..."
java -jar /opt/apps/myapp.jar

九、Docker 中使用 Oracle JDK 17

如果你使用 Docker,可以參考以下 Dockerfile:

# 基于官方 JDK 17 鏡像(最簡(jiǎn)單的方式)
FROM eclipse-temurin:17-jre

# 或者手動(dòng)安裝 Oracle JDK 17
FROM ubuntu:22.04

COPY jdk-17_linux-x64_bin.tar.gz /tmp/

RUN mkdir -p /opt/java && \
    tar -zxvf /tmp/jdk-17_linux-x64_bin.tar.gz -C /opt/java && \
    rm /tmp/jdk-17_linux-x64_bin.tar.gz && \
    echo 'export JAVA_HOME=/opt/java/jdk-17.0.12' > /etc/profile.d/jdk.sh && \
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/jdk.sh

ENV JAVA_HOME=/opt/java/jdk-17.0.12
ENV PATH=$JAVA_HOME/bin:$PATH

WORKDIR /app
COPY target/myapp.jar /app/

CMD ["java", "-jar", "myapp.jar"]

十、常見問題排查

10.1 java: command not found

# 原因:環(huán)境變量未生效或未正確配置

# 檢查 1:確認(rèn) java 二進(jìn)制文件存在
ls -l /opt/java/jdk-17.0.12/bin/java

# 檢查 2:確認(rèn) JAVA_HOME 已設(shè)置
echo $JAVA_HOME

# 檢查 3:手動(dòng) source 配置文件
source /etc/profile.d/jdk.sh

# 檢查 4:查看 PATH 是否包含 JAVA_HOME/bin
echo $PATH | tr ':' '\n' | grep java

10.2 版本不對(duì)(顯示的是 OpenJDK)

# 原因:系統(tǒng) PATH 中其他 Java 路徑排在前面

# 查找所有 java 可執(zhí)行文件
which -a java

# 預(yù)期應(yīng)該只有 /opt/java/jdk-17.0.12/bin/java

# 如果有其他路徑,檢查 /usr/bin/ 下的軟鏈接
ls -l /usr/bin/java
sudo update-alternatives --set java /opt/java/jdk-17.0.12/bin/java

10.3 中文亂碼

# 原因:Linux 容器中沒有中文字體包

# Ubuntu / Debian
sudo apt-get install -y fonts-wqy-microhei fonts-wqy-zenhei

# CentOS / RHEL
sudo yum install -y wqy-microhei-fonts

10.4 Permission Denied

# 原因:解壓后的文件沒有執(zhí)行權(quán)限

sudo chmod +x /opt/java/jdk-17.0.12/bin/*

10.5 問題速查表

報(bào)錯(cuò)信息原因解決方案
command not found環(huán)境變量未配置source /etc/profile.d/jdk.sh
版本號(hào)不是 17系統(tǒng)有其他 Javaupdate-alternatives --config java
Unable to init server無圖形環(huán)境服務(wù)器環(huán)境不需要 GUI,忽略即可
中文亂碼缺少字體包安裝 fonts-wqy-microhei
Permission denied文件無執(zhí)行權(quán)限chmod +x bin/*

十一、總結(jié)

安裝步驟回顧

sequenceDiagram
    participant U as 開發(fā)者
    participant S as 服務(wù)器
    
    U->>S: 1. 檢查環(huán)境與舊版本
    S-->>U: 返回系統(tǒng)信息和已安裝 Java
    U->>S: 2. 清理舊版 Java
    S-->>U: 確認(rèn)清理干凈
    U->>S: 3. 下載 JDK 17 tar.gz
    S-->>U: 下載完成
    U->>S: 4. 解壓到 /opt/java/
    S-->>U: 解壓成功
    U->>S: 5. 配置 /etc/profile.d/jdk.sh
    S-->>U: 配置已寫入
    U->>S: 6. source 使配置生效
    S-->>U: 生效成功
    U->>S: 7. java -version 驗(yàn)證
    S-->>U: ? java version "17.0.x"
步驟關(guān)鍵命令耗時(shí)
檢查環(huán)境java -version10s
清理舊版apt-get remove1-3min
下載安裝wget2-5min(視網(wǎng)速)
解壓安裝tar -zxvf30s
配置環(huán)境變量vim + source30s
驗(yàn)證java -version10s

核心要點(diǎn)

  1. 先清理再安裝 — 避免版本沖突,但刪除前務(wù)必確認(rèn)路徑
  2. 安裝位置要統(tǒng)一 — 推薦 /opt/java/,保持系統(tǒng)整潔
  3. 環(huán)境變量用獨(dú)立文件/etc/profile.d/jdk.sh 比改 /etc/profile 更易維護(hù)
  4. 路徑替換別遺漏 — 把示例中的 jdk-17.0.12 換成實(shí)際目錄名
  5. 多用 update-alternatives — 多版本管理的標(biāo)準(zhǔn)做法

以上就是Linux手動(dòng)部署Oracle JDK 17的完全指南的詳細(xì)內(nèi)容,更多關(guān)于Linux手動(dòng)部署Oracle JDK 17的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

海丰县| 璧山县| 廉江市| 厦门市| 博乐市| 溧阳市| 宿迁市| 巴林右旗| 淄博市| 万山特区| 会宁县| 哈巴河县| 长乐市| 清丰县| 江陵县| 漯河市| 邹平县| 仪征市| 关岭| 大竹县| 衡山县| 井冈山市| 嘉定区| 石林| 通州市| 开阳县| 上虞市| 黄大仙区| 南宁市| 体育| 福鼎市| 榆中县| 句容市| 博爱县| 遵化市| 宝山区| 福鼎市| 安仁县| 温泉县| 区。| 新巴尔虎右旗|