linux下jenv配置使用
linux下jenv配置使用
目的
- 因开发需求需要配置多个java环境,遂使用jenv进行java的版本管理
jenv简介
- jenv可以切换多个不同的java版本环境,比如说可以在java8和java11之间进行切换
- jenv是通过设置
java_home来达成这一目的的.这意味着这种切换是全局性的,不仅是在你的工程之中进行了切换,还在你的shell中也完成了切换
本机系统配置
- nobara
- i5-11300H+16G+2T
安装步骤
java包下载
本文对java1.8及java21进行相应测试,均使用tar.gz包进行安装.java包的下载地址推荐使用国内镜像进行下载
$> sudo cp %java-version.tar.gz% /opt
$> cd /opt
$> tar -xzvf %java-version.tar.gz%
效果如图所示

其中,jdk1.8.0_202及jdk-21.0.1为解压后的文件
jenv下载及安装
$> git clone https://github.com/jenv/jenv.git ~/.jenv
# Shell: bash
$> echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$> echo 'eval "$(jenv init -)"' >> ~/.bash_profile
以上来自于jenv github页面
因在nobara中,~/.bashrc的生效优先级高于~/.bash_profile,本文将echo的内容调整至~/.bashrc中,如下图所示

在shell中执行source ~/.bashrc并重启shell,即可完成安装
jenv配置
在前两步的基础之上需要使用jenv将java环境配置起来
$> jenv add /opt/jdk1.8.0_202/bin
$> jenv add /opt/jdk-21.0.1/bin
配置成功后如下所示
$> jenv versions
system
17
* 17.0 (set by /home/soap/.jenv/version)
17.0.8
1.8
1.8.0.202
21
21.0
21.0.1
openjdk64-17.0.8
openjdk64-21.0.1
oracle64-1.8.0.202
$> java -version
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (Red_Hat-17.0.8.0.7-1.fc38) (build 17.0.8+7)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.8.0.7-1.fc38) (build 17.0.8+7, mixed mode, sharing)
上文表示jenv所管理的java环境以及对应的java版本号
使用jenv global %version%切换版本号
$> jenv global 21.0
$> java -version
openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
上文将原来的java17环境切换成了java21
安装成功与否检测
$> jenv doctor
[OK] JAVA_HOME variable probably set by jenv PROMPT
[OK] Java binaries in path are jenv shims
[OK] Jenv is correctly loaded
三项都报ok即可,注意需要删除JAVA_HOME,否则maven的jdk版本会以设置的JAVA_HOME为准,jenv所设置的jdk环境在maven中无法生效
jenv项目解析
- 进入项目目录查看内容
$> jenv versions
system
17
17.0
17.0.8
1.8
1.8.0.202
21
* 21.0 (set by /home/soap/.jenv/version)
21.0.1
openjdk64-17.0.8
openjdk64-21.0.1
oracle64-1.8.0.202
可以看到jenv versions数据其中有一项为
- 21.0 (set by /home/soap/.jenv/version)
可以看到这个版本是根据home/soap/.jenv/version来设置的,进入~/.jenv查看version的内容
$> ls
17.0.8.time 1.8.0.202.time 21.0.time bin jenv.version openjdk64-17.0.8.time plugins shims versions
17.0.time 1.8.time 21.time completions libexec openjdk64-21.0.1.time README.md test
17.time 21.0.1.time available-plugins fish LICENSE oracle64-1.8.0.202.time run-tests.sh version
$> cat version
21.0
version作为一个文本文件里面的内容即为21.0
查看versions里的内容
$> cd versions
$> ls -al
total 44
drwxr-xr-x 1 soap soap 172 12月18日 22:01 .
drwxr-xr-x 1 soap soap 572 12月18日 22:01 ..
lrwxrwxrwx 1 soap soap 10 12月14日 16:40 17 -> /home/soap
lrwxrwxrwx 1 soap soap 10 12月14日 16:40 17.0 -> /home/soap
lrwxrwxrwx 1 soap soap 10 12月14日 16:40 17.0.8 -> /home/soap
lrwxrwxrwx 1 soap soap 17 12月14日 16:53 1.8 -> /opt/jdk1.8.0_202
lrwxrwxrwx 1 soap soap 17 12月14日 16:53 1.8.0.202 -> /opt/jdk1.8.0_202
lrwxrwxrwx 1 soap soap 15 12月18日 22:01 21 -> /opt/jdk-21.0.1
lrwxrwxrwx 1 soap soap 15 12月18日 22:01 21.0 -> /opt/jdk-21.0.1
lrwxrwxrwx 1 soap soap 15 12月18日 22:01 21.0.1 -> /opt/jdk-21.0.1
lrwxrwxrwx 1 soap soap 10 12月14日 16:40 openjdk64-17.0.8 -> /home/soap
lrwxrwxrwx 1 soap soap 15 12月18日 22:01 openjdk64-21.0.1 -> /opt/jdk-21.0.1
lrwxrwxrwx 1 soap soap 17 12月14日 16:53 oracle64-1.8.0.202 -> /opt/jdk1.8.0_202
该目录下文件均为链接文件,指向对应的java目录,其中,17.0为系统自带java,1.8以及21.0为上文所解压的java
推测是通过更改链接文件来实现对java版本号的管理

浙公网安备 33010602011771号