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

Linux手動部署Oracle JDK 17的完全指南

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

一、為什么選擇手動安裝?

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

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

手動安裝的核心優(yōu)勢:

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

二、環(huán)境準備

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

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

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

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

# 查看當前是否已安裝 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)

上面輸出一臺典型的 Ubuntu 22.04 服務器,已預裝 OpenJDK 11,CPU 為 x86_64 架構。

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 清理殘留文件

有時包管理器卸載后會殘留配置文件或軟鏈接:

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

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

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

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

檢查并清理 ~/.bashrc~/.zshrc、/etc/profile 中關于 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 賬號并同意 OTN 許可協(xié)議
  • 歸檔版本查看:Java SE 17 Archive Downloads

4.2 使用 wget 命令行下載

# x86_64 架構(最常見)
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 架構
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 證書驗證(某些內網(wǎng)環(huán)境需要),--header 用于自動接受許可協(xié)議。

4.3 驗證下載完整性

# 查看文件大小(正常應在 190MB 左右)
ls -lh jdk-17_linux-x64_bin.tar.gz

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

五、解壓安裝

5.1 選擇安裝位置

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

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

本文以 /opt/java/ 為例:

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

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

# 進入安裝目錄
cd /opt/java

5.2 解壓 tar.gz 包

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

# 查看解壓結果
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 安裝結果示意

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/       [運行時環(huán)境]";
    "jdk-17.0.12/" -> "conf/      [配置文件]";
}

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

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

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

這種方式只影響 Java 相關配置,不會污染主配置文件,且對所有用戶生效。

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

寫入以下內容:

# 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

重要:請將 /opt/java/jdk-17.0.12 替換為你實際的解壓目錄名!可以用 ls /opt/java/ 確認。

使配置立即生效:

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(僅當前用戶)

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 三種方式對比

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

七、驗證安裝

7.1 基礎驗證

# 檢查 java 命令版本
java -version

# 預期輸出:
# 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

# 預期輸出:
# javac 17.0.12

# 確認 JAVA_HOME 正確設置
echo $JAVA_HOME

# 預期輸出:
# /opt/java/jdk-17.0.12

7.2 運行測試程序

創(chuàng)建一個簡單的 Java 文件驗證編譯和運行是否正常:

// 創(chuàng)建測試文件
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"));
        
        // 測試 StringJoiner(JDK 17 內置 API)
        java.util.StringJoiner sj = new java.util.StringJoiner(", ");
        sj.add("Oracle").add("JDK").add("17");
        System.out.println(sj);
    }
}
EOF

# 編譯
javac Test.java

# 運行
java Test

# 預期輸出:
# Hello from JDK 17.0.12
# OS: Linux
# Oracle, JDK, 17

# 清理測試文件
rm Test.java Test.class

7.3 驗證流程圖

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 版本管理

服務器上往往需要同時存在多個 JDK 版本(比如項目 A 用 JDK 8,項目 B 用 JDK 17)。

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

# 注冊 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,也注冊進去
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-1.8.0/bin/java 1800

# 查看已注冊的版本列表
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)先級數(shù)字說明

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

當數(shù)字相同時,最后注冊的版本成為默認

8.3 版本切換流程

flowchart TD
    A["需要切換 JDK 版本"] --> B["update-alternatives --config java"]
    B --> C["輸入對應編號"]
    C --> D["source /etc/profile"]
    D --> E["java -version 驗證"]
    E --> F["重啟相關服務"]
    
    subgraph 常見場景
        G["部署新項目 → 切到高版本"]
        H["回滾上線 → 切到低版本"]
        I["并行測試 → 不切換"]
    end
    
    A --> G
    A --> H
    A --> I

8.4 按項目動態(tài)切換(進階)

不想全局切換時,可以在項目啟動腳本中臨時指定:

#!/bin/bash
# deploy.sh — 項目專屬 JDK

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

echo "使用 ${JAVA_HOME} 啟動應用..."
java -jar /opt/apps/myapp.jar

九、Docker 中使用 Oracle JDK 17

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

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

# 或者手動安裝 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:確認 java 二進制文件存在
ls -l /opt/java/jdk-17.0.12/bin/java

# 檢查 2:確認 JAVA_HOME 已設置
echo $JAVA_HOME

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

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

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

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

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

# 預期應該只有 /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í)行權限

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

10.5 問題速查表

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

十一、總結

安裝步驟回顧

sequenceDiagram
    participant U as 開發(fā)者
    participant S as 服務器
    
    U->>S: 1. 檢查環(huán)境與舊版本
    S-->>U: 返回系統(tǒng)信息和已安裝 Java
    U->>S: 2. 清理舊版 Java
    S-->>U: 確認清理干凈
    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 驗證
    S-->>U: ? java version "17.0.x"
步驟關鍵命令耗時
檢查環(huán)境java -version10s
清理舊版apt-get remove1-3min
下載安裝wget2-5min(視網(wǎng)速)
解壓安裝tar -zxvf30s
配置環(huán)境變量vim + source30s
驗證java -version10s

核心要點

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

以上就是Linux手動部署Oracle JDK 17的完全指南的詳細內容,更多關于Linux手動部署Oracle JDK 17的資料請關注腳本之家其它相關文章!

相關文章

最新評論

虹口区| 汉寿县| 朝阳区| 丰原市| 正阳县| 屯留县| 正阳县| 吉隆县| 白沙| 华蓥市| 红桥区| 乌兰浩特市| 耿马| 阿图什市| 鸡东县| 泸西县| 尖扎县| 抚远县| 利川市| 蓬莱市| 新田县| 鱼台县| 那坡县| 焦作市| 蒙城县| 手游| 茂名市| 东台市| 双城市| 额敏县| 上思县| 宁德市| 东乡族自治县| 南靖县| 阿克苏市| 西乌| 正宁县| 广东省| 临城县| 彭泽县| 灵丘县|