CentOS搭建:JDK
目录
参考:
# CentOS搭建:JDK
# 环境依赖
软件/系统 | 版本 | 包名 | 备注 |
---|---|---|---|
Linux | 7 | CentOS 7.x | |
JDK | 8 | jdk-8u411-linux-x64.tar.gz | 官网下载 (opens new window) |
# 卸载已安装JDK
#检查JDK
java -version
2
#查询已安装JDK
rpm -qa | grep java
2
#卸载已安装JDK
sudo rpm -e --nodeps 名称
2
# 解压缩安装包
sudo tar -zxvf jdk-8u411-linux-x64.tar.gz -C /soft/jdk
ll -a /soft/jdk |grep jdk
2
# 配置环境变量
# 查看
ll /etc/profile.d
# 编辑
sudo vi /etc/profile.d/java.sh
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
2
3
4
5
#重新加载配置文件
source /etc/profile.d/java.sh
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
2
3
4
5
# 配置环境变量
cd ~
cp .bashrc .bashrc.bak20230630
vim .bashrc
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
2
3
4
5
#重新加载配置文件
source .bashrc
2
# 验证 Java 环境
java -version
javac -version
2
# Java环境管理工具
仔细阅读以下给定网址的全部内容,再结合联网搜索内容,给出内容:Java环境管理工具jenv的使用指南。 内容维度可以包括但不限于以下几点: 1.概念与术语,可以包括但不限于:核心定义、名词术语(表格); 2.使用指南,可以包括但不限于:集成安装与环境配置、使用方法与解释说明、注意事项或常见问题; 3.综合使用案例。 内容维度中使用指南下的“使用方法与解释说明”要求以使用方法(函数方法等)详尽列举并逐项详细解释说明(方法作用、代码示例、字段解释、返回说明等)。 以下为给定网址:
使用JDK 版本管理工具jEnv解决不同jdk版本项目 (opens new window)
如何使用jenv工具管理多个JDK版本 (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 设置,仅对当前终端会话生效(退出后失效) |
插件 | 扩展功能 | 如maven 、gradle 插件,管理构建工具的版本与环境变量 |
# 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 # 输出版本号即成功
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"
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'
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 总结
jEnv通过层级化的版本控制(全局/本地/Shell)实现多JDK环境隔离,结合插件扩展无缝支持Maven/Gradle等工具。在CentOS 7中,需注意:
- 优先通过
yum
安装OpenJDK,路径通常在/usr/lib/jvm/
- 使用
jenv doctor
诊断配置问题 - 避免手动设置
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18