搜索
首页Javajava教程在 Linux 上安装和管理 Java JDK 的首选方式

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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
平台独立性如何使企业级的Java应用程序受益?平台独立性如何使企业级的Java应用程序受益?May 03, 2025 am 12:23 AM

Java在企业级应用中被广泛使用是因为其平台独立性。1)平台独立性通过Java虚拟机(JVM)实现,使代码可在任何支持Java的平台上运行。2)它简化了跨平台部署和开发流程,提供了更大的灵活性和扩展性。3)然而,需注意性能差异和第三方库兼容性,并采用最佳实践如使用纯Java代码和跨平台测试。

考虑到平台独立性,Java在物联网(物联网)设备的开发中扮演什么角色?考虑到平台独立性,Java在物联网(物联网)设备的开发中扮演什么角色?May 03, 2025 am 12:22 AM

JavaplaysigantroleiniotduetoitsplatFormentence.1)itallowscodeTobewrittenOnCeandrunonVariousDevices.2)Java'secosystemprovidesuseusefidesusefidesulylibrariesforiot.3)

描述一个方案,您在Java中遇到了一个特定于平台的问题以及如何解决。描述一个方案,您在Java中遇到了一个特定于平台的问题以及如何解决。May 03, 2025 am 12:21 AM

ThesolutiontohandlefilepathsacrossWindowsandLinuxinJavaistousePaths.get()fromthejava.nio.filepackage.1)UsePaths.get()withSystem.getProperty("user.dir")andtherelativepathtoconstructthefilepath.2)ConverttheresultingPathobjecttoaFileobjectifne

Java平台独立对开发人员有什么好处?Java平台独立对开发人员有什么好处?May 03, 2025 am 12:15 AM

Java'splatFormIndenceistificantBecapeitAllowSitallowsDevelostWriTecoDeonCeandRunitonAnyPlatFormwithAjvm.this“ writeonce,runanywhere”(era)橱柜橱柜:1)交叉plat formcomplibility cross-platformcombiblesible,enablingDeploymentMentMentMentMentAcrAptAprospOspOspOssCrossDifferentoSswithOssuse; 2)

将Java用于需要在不同服务器上运行的Web应用程序的优点是什么?将Java用于需要在不同服务器上运行的Web应用程序的优点是什么?May 03, 2025 am 12:13 AM

Java适合开发跨服务器web应用。1)Java的“一次编写,到处运行”哲学使其代码可在任何支持JVM的平台上运行。2)Java拥有丰富的生态系统,包括Spring和Hibernate等工具,简化开发过程。3)Java在性能和安全性方面表现出色,提供高效的内存管理和强大的安全保障。

JVM如何促进Java的'写作一次,在任何地方运行”(WORA)功能?JVM如何促进Java的'写作一次,在任何地方运行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通过字节码解释、平台无关的API和动态类加载实现Java的WORA特性:1.字节码被解释为机器码,确保跨平台运行;2.标准API抽象操作系统差异;3.类在运行时动态加载,保证一致性。

Java的较新版本如何解决平台特定问题?Java的较新版本如何解决平台特定问题?May 02, 2025 am 12:18 AM

Java的最新版本通过JVM优化、标准库改进和第三方库支持有效解决平台特定问题。1)JVM优化,如Java11的ZGC提升了垃圾回收性能。2)标准库改进,如Java9的模块系统减少平台相关问题。3)第三方库提供平台优化版本,如OpenCV。

说明JVM执行的字节码验证的过程。说明JVM执行的字节码验证的过程。May 02, 2025 am 12:18 AM

JVM的字节码验证过程包括四个关键步骤:1)检查类文件格式是否符合规范,2)验证字节码指令的有效性和正确性,3)进行数据流分析确保类型安全,4)平衡验证的彻底性与性能。通过这些步骤,JVM确保只有安全、正确的字节码被执行,从而保护程序的完整性和安全性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境