首頁 > Java > java教程 > 主體

在 Linux 上安裝和管理 Java JDK 的首選方式

Patricia Arquette
發布: 2024-10-31 05:09:30
原創
281 人瀏覽過

The preferred way to install and manage Java JDKs on Linux

我使用的是 Fedora Workstation 40,但類似的步驟適用於大多數主要 Linux 發行版,如 Ubuntu/Mint 等

檢查現有的 Java 安裝

在某些 Linux 發行版上,Java 是預設安裝的;然而它只是JRE,而不是JDK。您可以驗證這一點,因為找到了 java 命令,但未找到 javac 命令。

java  # would show manual of arguments
javac # would give not found error if JDK not installed
登入後複製
登入後複製
登入後複製
java --version  # OR "java -version" for older java
javac --version
登入後複製
登入後複製
登入後複製

參考以下文章了解 JDK、JRE 和 JVM 之間的差異:

  • Java 程式設計環境與 Java 執行環境 (JRE)
  • Java 中的 JDK、JRE、JVM 和 JIT 是什麼?

在 Fedora 中,JRE/JDK 儲存在 /usr/lib/jvm 中。所以你可以查看它的內容或查詢它們:

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
登入後複製
登入後複製
登入後複製

安裝 OpenJDK

我使用的是 Fedora 40,其中套件管理器是 dnf。您將透過各自的 Linux 發行版的套件管理器(例如 Ubuntu/Debian 的 apt)安裝所需的 OpenJDK:

  • 搜尋可用的 JDK 進行安裝:
  dnf search jdk
登入後複製
登入後複製
登入後複製

您將獲得可安裝的軟體包列表,其中包含各種 Java 版本以及軟體包中的變體後綴。無頭變體通常只包含 JRE。要安裝完整的 JDK 以及 Java 開發所需的所有工具,我們需要套件的開發變體,通常在 dnf 名稱中包含 -devel 術語後綴。以下是 dnf 輸出中 Java 17 OpenJDK 的幾個套件變體名稱的清單:

  java-17-openjdk.x86_64 : OpenJDK 17 Runtime Environment
  java-17-openjdk-devel.x86_64 : OpenJDK 17 Development Environment
  java-17-openjdk-devel-fastdebug.x86_64 : OpenJDK 17 Development Environment optimised with full debugging on
  java-17-openjdk-devel-slowdebug.x86_64 : OpenJDK 17 Development Environment unoptimised with full debugging on
  java-17-openjdk-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless.x86_64 : OpenJDK 17 Headless Runtime Environment
  java-17-openjdk-headless-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-javadoc.x86_64 : OpenJDK 17 API documentation
  java-17-openjdk-portable.x86_64 : OpenJDK 17 Runtime Environment portable edition
  java-17-openjdk-portable-devel.x86_64 : OpenJDK 17 Development Environment portable edition
  java-17-openjdk-portable-sources.x86_64 : OpenJDK 17 full patched sources of portable JDK
  java-17-openjdk-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-src.x86_64 : OpenJDK 17 Source Bundle
  java-17-openjdk-src-fastdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and optimisation
  java-17-openjdk-src-slowdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and no optimisation
登入後複製
登入後複製

在 Ubuntu 上,軟體包較少,您要安裝的軟體包通常命名為 openjdk-17-jdk,用於整個 JDK 工具集

  • 從該清單中安裝您想要的 OpenJDK 套件
  # Installing the latest OpenJDK with optimized debugging
  sudo dnf install java-latest-openjdk-devel-fastdebug

  # Installing a specific version like OpenJDK 17
  sudo dnf install java-17-openjdk-devel
登入後複製
登入後複製
  • 透過檢查是否找到 java 和 javac 指令來驗證安裝

安裝 Oracle JDK

  • 造訪官方 Oracle SE 下載頁面。找到您所需的 Java 版本的下載部分

  • 下載適合您平台的軟體包。對於基於 RedHat 的 Linux 發行版(例如 Fedora),請下載 .rpm 軟體包(對於 Ubuntu/Debian,則下載 .deb)。下載前,您必須登入 Oracle 並同意條款

  • 雙擊下載的檔案(如 jdk-11.0.24_linux-x64_bin.rpm)並選擇安裝。它將安裝並配置 Oracle JDK。

  • 現在 OracleJDK 已安裝,驗證偵測到的 java 和 javac 指令

透過 IntelliJ 安裝 JDK

您也可以從 IntelliJ 本身安裝 JDK:

  • 點選齒輪圖示 ⚙️,然後進入專案結構。選擇 SDK,點選加號圖示。然後選擇你要下載安裝的JDK
  • JDK安裝在~/.jdks資料夾中,例如:~/.jdks/openjdk-20.0.2/

IntelliJ 自動偵測系統上可用的 JDK 位置。您也可以在專案結構中配置的 JDK 下方新增現有的 JDK 資料夾位置,例如 /usr/lib/jvm/jdk-11-oracle-x64


使用多個 Java 安裝

Linux 中的 update-alternatives 指令(在 Fedora 中也稱為替代品)建立、刪除、維護和顯示有關構成替代品系統的符號連結的資訊。

單一系統上可以同時安裝多個實現相同或類似功能的程式。檔案系統中的通用名稱由提供可互換功能的所有檔案共用。替代系統有助於確定該通用名稱引用了哪個實際文件。

有用的參考:

  • 更新替代品 - Linux 手冊頁
  • Linux - RedHat 中的替代指令介紹

當您透過套件管理器安裝 OpenJDK 或從下載的檔案安裝 Oracle-JDK 時,替代方案應在此過程中自動更新

查看命令的可用選項

java  # would show manual of arguments
javac # would give not found error if JDK not installed
登入後複製
登入後複製
登入後複製

輸出如下:

java --version  # OR "java -version" for older java
javac --version
登入後複製
登入後複製
登入後複製

同樣,請參閱 javac 的替代選項清單

為命令添加替代項

如果您的命令的任何替代項未在清單中註冊,您可以手動將其新增為:

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
登入後複製
登入後複製
登入後複製

例如,我從 IntelliJ 下載了 JetBrains Runtime (JCEF) JDK,下載位置為 ~/.jdks/jbrsdk_jcef-17.0.12/ 資料夾;但它沒有出現在替代品清單中。因此,我將添加 java 和 javac 的替代條目:

  dnf search jdk
登入後複製
登入後複製
登入後複製

同樣,根據需要添加更多命令的替代項,例如 jar、javadoc 等

您也可以新增追蹤者連結:

--安裝連結名稱路徑優先權 [--follower 連結名稱路徑]... [--initscript 服務] [--系列名稱]

在命令的可用替代方案之間切換

在現有的 Java 安裝之間進行選擇

  java-17-openjdk.x86_64 : OpenJDK 17 Runtime Environment
  java-17-openjdk-devel.x86_64 : OpenJDK 17 Development Environment
  java-17-openjdk-devel-fastdebug.x86_64 : OpenJDK 17 Development Environment optimised with full debugging on
  java-17-openjdk-devel-slowdebug.x86_64 : OpenJDK 17 Development Environment unoptimised with full debugging on
  java-17-openjdk-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless.x86_64 : OpenJDK 17 Headless Runtime Environment
  java-17-openjdk-headless-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-javadoc.x86_64 : OpenJDK 17 API documentation
  java-17-openjdk-portable.x86_64 : OpenJDK 17 Runtime Environment portable edition
  java-17-openjdk-portable-devel.x86_64 : OpenJDK 17 Development Environment portable edition
  java-17-openjdk-portable-sources.x86_64 : OpenJDK 17 full patched sources of portable JDK
  java-17-openjdk-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-src.x86_64 : OpenJDK 17 Source Bundle
  java-17-openjdk-src-fastdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and optimisation
  java-17-openjdk-src-slowdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and no optimisation
登入後複製
登入後複製

輸出如下圖所示。請注意,* 表示最佳可用版本並表示您目前的選擇:

  # Installing the latest OpenJDK with optimized debugging
  sudo dnf install java-latest-openjdk-devel-fastdebug

  # Installing a specific version like OpenJDK 17
  sudo dnf install java-17-openjdk-devel
登入後複製
登入後複製

類似地,在 javac 的替代選項中進行選擇

當您卸載/刪除 JDK 軟體包時,請記住也刪除相應的替代條目

刪除替代條目

例如,要刪除 JCEF JDK 的 java 指令替代條目:

java  # would show manual of arguments
javac # would give not found error if JDK not installed
登入後複製
登入後複製
登入後複製

將 Java 新增到路徑

如果您按照 update-alternatives 方法在 Java 安裝之間進行管理並且所有條目均已完成,則不需要執行此操作

但是,要在 shell 設定檔中手動設定配置,您可以執行以下操作:

  • 在 Shell 設定檔中設定環境變數(即 ~/.zshrc、~/.bashrc 等)
java --version  # OR "java -version" for older java
javac --version
登入後複製
登入後複製
登入後複製
  • 重新啟動SHELL:
find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
登入後複製
登入後複製
登入後複製
  • 現在應該成功偵測到java了
  dnf search jdk
登入後複製
登入後複製
登入後複製

以上是在 Linux 上安裝和管理 Java JDK 的首選方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!