CentOS搭建:JDK

12/31/2023 运维操作系统LinuxCentOS

目录


参考:


# CentOS搭建:JDK

# 环境依赖

软件/系统 版本 包名 备注
Linux 7 CentOS 7.x
JDK 8 jdk-8u411-linux-x64.tar.gz 官网下载 (opens new window)

# 卸载已安装JDK

#检查JDK
java -version
1
2
#查询已安装JDK
rpm -qa | grep java
1
2
#卸载已安装JDK
sudo rpm -e --nodeps 名称
1
2

# 解压缩安装包

sudo tar -zxvf jdk-8u411-linux-x64.tar.gz -C /soft/jdk
ll -a /soft/jdk |grep jdk
1
2

# 配置环境变量

# 查看
ll /etc/profile.d
# 编辑
sudo vi /etc/profile.d/java.sh
1
2
3
4

填入配置内容并保存

#JAVA 注意:JAVA_HOME后面修改为自己的完整路径
export JAVA_HOME=/soft/jdk/jdk1.8.0_411
export JRE_HOME=/soft/jdk/jdk1.8.0_411/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
1
2
3
4
5
#重新加载配置文件
source /etc/profile.d/java.sh
1
2

重点说明:

  • 在Window系统中环境变量分隔符使用“分号”,在Linux系统中使用“冒号”。
  • PATH变量的值除了设置了JAVA环境外,还取用了$PATH,该$PATH实际指向Linux命令集,如果没有该配置,Linux命令将无法使用(显示未找到命令)。

# 非ROOT用户安装

sudo:linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如 halt、reboot、su 等等。

/etc/profile 和 ~/.bash_profile区别

  • # 解压缩安装包

sudo mkdir -p /soft/jdk
sudo mv jdk-8u411-linux-x64.tar.gz /soft/jdk 
cd /soft/jdk
sudo tar -zxvf jdk-8u411-linux-x64.tar.gz
ll
1
2
3
4
5
  • # 配置环境变量

cd ~
cp .bashrc .bashrc.bak20230630
vim .bashrc
1
2
3

填入如下配置内容并保存

#JAVA 注意:JAVA_HOME后面修改为自己的完整路径
export JAVA_HOME=/soft/jdk1.8.0_411
export JRE_HOME=/soft/jdk1.8.0_411/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
1
2
3
4
5
#重新加载配置文件
source .bashrc
1
2

# 验证 Java 环境

java -version
javac -version
1
2

# Java环境管理工具

仔细阅读以下给定网址的全部内容,再结合联网搜索内容,给出内容:Java环境管理工具jenv的使用指南。 内容维度可以包括但不限于以下几点: 1.概念与术语,可以包括但不限于:核心定义、名词术语(表格); 2.使用指南,可以包括但不限于:集成安装与环境配置、使用方法与解释说明、注意事项或常见问题; 3.综合使用案例。 内容维度中使用指南下的“使用方法与解释说明”要求以使用方法(函数方法等)详尽列举并逐项详细解释说明(方法作用、代码示例、字段解释、返回说明等)。 以下为给定网址:

使用JDK 版本管理工具jEnv解决不同jdk版本项目 (opens new window)

jenv 使用指南 (opens new window)

如何使用jenv工具管理多个JDK版本 (opens new window)

jenv 使用教程 (opens new window)

centos使用jenv管理不同版本的jdk (opens new window)


# jenv使用指南

以下为基于提供的5个链接及jEnv官方文档整理的CentOS 7下Java环境管理工具jenv使用指南,内容涵盖概念术语、使用指南及综合案例。


# 1. 概念与术语

# 核心定义

术语 类型 说明
jEnv 工具 轻量级Java版本管理工具,支持多JDK版本切换和环境隔离
全局版本 配置层级 通过jenv global设置,对所有项目生效(除非被覆盖)
本地版本 配置层级 通过jenv local设置,仅对当前目录及其子目录生效(生成.java-version文件)
Shell会话版本 配置层级 通过jenv shell设置,仅对当前终端会话生效(退出后失效)
插件 扩展功能 mavengradle插件,管理构建工具的版本与环境变量

# 2. 使用指南

# 2.1 安装与环境配置

注意:CentOS 7需先安装Git和依赖库

# 安装依赖
sudo yum install git tar -y

# 通过Git安装jenv(推荐)
git clone https://github.com/jenv/jenv.git ~/.jenv

# 配置环境变量(Bash用户)
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
source ~/.bashrc

# 验证安装
jenv --version  # 输出版本号即成功
1
2
3
4
5
6
7
8
9
10
11
12
13
# 2.2 使用方法与解释说明

以下为jEnv核心命令详解:

命令 作用 代码示例 参数说明 返回说明
jenv add <JDK_PATH> 添加本地JDK到jEnv管理 jenv add /usr/lib/jvm/java-11-openjdk JDK安装路径 提示添加成功及版本标识(如11.0
jenv versions 列出所有管理的JDK版本 jenv versions 版本列表(*标识当前激活版本)
jenv global <VERSION> 设置全局默认JDK版本 jenv global 11.0 版本标识(如11.0 设置成功提示
jenv local <VERSION> 设置当前目录的JDK版本 jenv local 1.8 版本标识(如1.8 生成.java-version文件
jenv shell <VERSION> 设置当前Shell会话的JDK版本 jenv shell 17.0 版本标识(如17.0 仅当前会话生效
jenv enable-plugin <PLUGIN> 启用扩展插件 jenv enable-plugin maven 插件名(如maven 插件启用成功提示
jenv doctor 检查jEnv配置与兼容性 jenv doctor 诊断报告及修复建议

注意

  • 版本标识通过jenv versions获取(如openjdk64-11.0.15
  • 使用前需确保JDK已物理安装(可通过yum install java-11-openjdk-devel安装)
# 2.3 注意事项与常见问题
问题 解决方案
切换版本后java -version未生效 执行jenv rehash刷新缓存,或检查Shell配置是否遗漏eval "$(jenv init -)"
无法找到已安装的JDK路径 使用sudo find / -name "java"搜索,或通过alternatives --list查看
插件启用失败 运行jenv doctor检查缺失依赖,确保JAVA_HOME未手动设置冲突
.java-version文件被误删 在项目根目录重新执行jenv local <VERSION>

# 3. 综合使用案例

# 场景:同时维护JDK 8与JDK 11的项目
# 步骤1:安装两个JDK版本
sudo yum install -y java-1.8.0-openjdk-devel java-11-openjdk-devel

# 步骤2:添加JDK到jEnv
jenv add /usr/lib/jvm/java-1.8.0-openjdk  # 标识为1.8
jenv add /usr/lib/jvm/java-11-openjdk     # 标识为11.0

# 步骤3:全局使用JDK 11
jenv global 11.0

# 步骤4:为旧项目单独设置JDK 8
cd ~/projects/legacy-system
jenv local 1.8  # 生成.java-version文件

# 步骤5:验证版本
cd ~/projects/legacy-system
java -version  # 输出:openjdk version "1.8.0_402"
cd ~
java -version  # 输出:openjdk version "11.0.22"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 扩展场景:在CI/CD中动态切换版本
# Jenkins Pipeline示例
pipeline {
    agent any
    stages {
        stage('Build JDK 8 Project') {
            steps {
                sh 'jenv local 1.8'
                sh 'mvn clean package'
            }
        }
        stage('Build JDK 11 Project') {
            steps {
                sh 'jenv local 11.0'
                sh 'mvn clean package'
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 总结

jEnv通过层级化的版本控制(全局/本地/Shell)实现多JDK环境隔离,结合插件扩展无缝支持Maven/Gradle等工具。在CentOS 7中,需注意:

  1. 优先通过yum安装OpenJDK,路径通常在/usr/lib/jvm/
  2. 使用jenv doctor诊断配置问题
  3. 避免手动设置JAVA_HOME防止与jEnv冲突

最佳实践:对每个项目执行jenv local,确保版本固化到代码库(.java-version文件需提交至Git)。

# jEnv作用范围与多用户配置指南

# 核心结论

jEnv是用户级工具,作用范围仅限于当前用户。在root用户下添加的JDK版本,其他用户默认无法直接使用,需在每个用户下独立配置。


# 详细分析
# 1. jEnv的作用范围
配置层级 作用范围 配置文件位置
全局用户 ❌ 不支持 无系统级配置
单用户 ✅ 仅对当前用户有效 ~/.jenv/
Shell会话 ✅ 仅当前终端有效 内存级临时设置
项目目录 ✅ 通过.java-version文件继承 项目根目录
# 2. root用户操作对其他用户的影响
操作 是否影响其他用户 原因说明
jenv add ❌ 不影响 JDK路径注册在/root/.jenv/versions,其他用户无读取权限
jenv global ❌ 不影响 全局配置写入/root/.jenv/version,其他用户使用自己的配置
安装JDK ✅ 影响 JDK物理安装在系统目录(如/usr/lib/jvm),所有用户可访问

# 多用户配置方案
# 场景:系统已安装JDK,需让所有用户使用jEnv管理
# 步骤1:系统级安装JDK(root操作)
sudo yum install java-1.8.0-openjdk-devel java-11-openjdk-devel

# 步骤2:为每个用户配置jEnv
# 以用户 user1 为例:
su - user1

# 安装jEnv(非root用户独立安装)
git clone https://github.com/jenv/jenv.git ~/.jenv

# 配置环境变量
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
source ~/.bashrc

# 添加系统JDK路径(使用绝对路径)
jenv add /usr/lib/jvm/java-1.8.0-openjdk
jenv add /usr/lib/jvm/java-11-openjdk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上次更新时间: 7/10/2025, 7:00:30 PM