Linux Java环境(JDK)安装
目录
环境声明: 本教程所有操作基于 CentOS 7 版本。
介绍
在Linux中,你遇到的Java通常指的是OpenJDK
这是一个开源的、免费的Java实现,也是绝大多数Linux发行版(如CentOS, Ubuntu)的默认选择。
| 术语 | 全称 | 作用 | 包含的关键命令 |
|---|---|---|---|
| JDK | Java Development Kit (Java开发工具包) | 用于开发Java程序。如果你需要编译Java代码(使用javac命令),就必须安装它。 |
javac, jar, javadoc, 以及JRE的全部 |
| JRE | Java Runtime Environment (Java运行时环境) | 用于运行Java程序。如果你只需要运行已经编译好的Java程序(如Hadoop),安装这个就够了。 | java |
一般来说,Linux安装java环境主要有两种方法:包管理安装 / 手动安装
包管理安装(不推荐)
| 软件包名称 | 功能定位 | 包含的关键命令 | 适用场景 |
|---|---|---|---|
java-1.8.0-openjdk.x86_64 |
Java 运行环境 (JRE) | java |
仅运行 Java 程序,如一个普通的 Java Web 应用。 |
java-1.8.0-openjdk-devel.x86_64 |
Java 开发工具包 (JDK) | java, javac, jar, jps 等 |
开发与运行 Java 程序,如编译源码、打 Jar 包。 |
java-1.8.0-openjdk-headless.x86_64 |
无界面运行环境 | java (精简版) |
运行在无图形界面的服务器上,依赖更少 |
通过yum包管理工具安装:
[root@localhost ~]# yum install -y java-1.8.0-openjdk-devel.x86_64

[root@localhost ~]# java -version

没配置JAVA环境变量为什么能直接执行java命令呢,是因为关于Linux的alternatives机制,将java的管理命令最终导向了系统目录 /usr/bin/java那
java的家目录怎么找呢?
方法一
[root@localhost ~]# readlink -f $(which java)
-f:follow -> final,跟随所有软链接,找到真实文件的最终位置

方法二
[root@localhost ~]# alternatives --config java

红框中即Java根目录,但是自己管理java目录更好一点,所以推荐第二种安装方式
包版本号问题
在 Java 9 之前的内部版本号是:1.(产品版本号).0_(安全更新版本)
像 Java 8 第202次更新的内部版本号就是:1.8.0_202
从 Java 9 开始 Oracle 决定不在分裂产品版本号和内部版本号,类似于:9.0.0
手动安装
手动安装方便基于Java的服务使用,完全可控JAVA_HOME,实现一个系统多服务使用多个JDK版本
1. 下载JDK包
Eclipse Adoptium( 原AdoptOpenJDK):点击跳转
Java官网:点击跳转
通过ftp或sftp工具将下载的包上传到服务器上,我统一扔 /opt 的software下:
2. 解压到管理目录
/opt:这个目录通常用于存放大型的、独立的第三方商业软件或那些不遵循标准文件系统结构的软件,也可以自定义
[root@localhost ~]# tar -zxvf /opt/software/jdk-8u391-linux-x64.tar.gz -C /opt/module/

[root@localhost ~]# mv /opt/module/jdk1.8.0_391 /opt/module/jdk
#更改Java家目录名称,方便填写家目录路径
3. 配置环境变量
全局
主要配置文件
/etc/profile:包含了大量系统级别的内容;不利于环境变量管理且再追加容易过于冗杂和出错,导致大量命令失效
强烈建议在profile.d下新建以.sh为后缀的文件 进行编辑
(一)新建 / 修改环境变量文件
[root@localhost ~]# vi /etc/profile.d/my_env.sh
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin
通过export将变量变为全局变量,指向了Java的家目录还有Java的启动程序位置
而 PATH 是 Linux/Unix 系统中最重要的环境变量之一,它告诉系统去哪里找可执行程序。

(二)在当前shell进程执行脚本
wq 保存退出后,根据你修改的配置文件来更新配置
[root@localhost ~]# source /etc/profile.d/my_env.sh
或
[root@localhost ~]# . /etc/profile.d/my_env.sh
注:在重登shell(logout)后也会自动加载profile及profile.d下的文件
单用户(局部)
为单个用户配置环境变量,只需修改该用户家目录下的配置文件即可。
主要配置文件
- ~/.bashrc # 最常用,每次打开终端都生效
- ~/.bash_profile # 登录时生效
- ~/.profile # 兼容其他 Shell,默认不存在,可创可不创
优先级
用户登录时执行顺序:
- ~/.bash_profile
- ~/.bashrc (如果 .bash_profile 调用了)
- ~/.profile (如果以上都没有)
(一)修改配置文件
推荐改.bashrc
[root@localhost ~]# vi ~/.bashrc
#追加部分
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin
(二)在当前shell进程执行脚本
wq 保存退出后,根据你修改的配置文件来更新配置
[root@localhost ~]# source ~/.bashrc
或
[root@localhost ~]# . ~/.bashrc
4. 验证
[root@localhost ~]# java -version

问题
两个安装方式一起使用,安装版本识别错误
[root@localhost ~]# yum remove -y java-1.8.0-openjdk-devel.x86_64

注意,我的java版本还是yum安装时的版本,证明仅yum移除java无效
因为alternatives在/usr/bin/(/bin)下的java优先级 高于 我手动添加的$JAVA_HOME/bin下的java,系统先找到了前面路径存在的java了

首先移除alternatives自动配置的java链接:
[root@localhost ~]# alternatives --display java
[root@localhost ~]# alternatives --remove java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.e17.x86_64/jre/bin/java

由于alternatives的安全机制不会擅自删除系统文件,所以/usr/bin/java这个链接文件本身还留着,但指向可能已经失效(死链接)
接着删除/usr/lib/jvm下所有jdk的主程序文件以及/usr/bin/java这个链接文件,再次验证版本即可:
[root@localhost ~]# rm -rf /usr/lib/jvm/*
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# java -version


AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)