Java 又双叒叕发布新版本,这么多版本如何灵活管理?

简介: 不知不觉 JDK13 发布已有两个月,不知道各位有没有下载学习体验一番?每次下载安装之后,需要重新配置一下 Java 环境变量。等到运行平时的项目又需要切回之前 JDK 版本,这又需要重新环境变量。这么重复配置显然非常低效,又不能灵活切换版本。所幸通过万能 Google 找到解决方案,使用 jenv 管理 JDK 版本。

前言


不知不觉 JDK13 发布已有两个月,不知道各位有没有下载学习体验一番?每次下载安装之后,需要重新配置一下 Java 环境变量。等到运行平时的项目又需要切回之前 JDK 版本,这又需要重新环境变量。这么重复配置显然非常低效,又不能灵活切换版本。

所幸通过万能 Google 找到解决方案,使用 jenv 管理 JDK 版本。

jenv 介绍

熟悉 Ruby 的同学,应该会觉得比较眼熟,jenv 就是 Java 平台的 rbenv 工具。

jenv 是一个命令行工具,可以在 Linux/OS X 平台使用,可以管理多个版本 JDK,方便在多个版本 JDK 之间切换,另外其还可以设置 JAVA_HOME 环境变量。

Windows 真的伤不起 😭

使用 jenv 有一个前提,必须提前安装 JDK,其不提供下载安装 JDK 的功能。MacOSX 平台可以提前使用 brew 安装 JDK。

jenv 安装

手动安装

首先下载 jenv 源程序

git clone https://github.com/jenv/jenv.git ~/.jenv

然后再将 jenv 命令路径放入 Shell 配置文件中。

若使用 Shell 为 bash

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile   
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

若使用 Shell 为 zsh

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc  
echo 'eval "$(jenv init -)"' >> ~/.zshrc
source ~/.zshrc

自动安装

若使用 MacOSX,可以直接使用 brew安装:

brew install jenv

jenv 校验

安装 jenv 之后,可以运行 jenv doctor检查是否正确安装。以下为我本机 MacOSX 输出:

64.jpg

刚安装小伙伴运行 jenv doctor ,可以观察到输出:

[ERROR] Java binary in path is not in the jenv shims.

这代表还未正确添加 JDK,需要运行下面指令添加 JDK。

jenv 配置

JDK 配置

运行 jenv add jdk_path,将 JDK 交给 jenv 管理。

65.jpg

可能有些小伙伴并不知道 JDK 安装路径,若是 MacOSX,JDK 是通过 Oracle 提供安装包或者通过 brew 安装,可以通过运行 /usr/libexec/java_home -V查找 JDK 路径。

66.jpg


若不是通过以上方式,或者为 Linux 平台,可以先通过
which java 或者 whereis java 找出命令路径。然后通过使用 ls -l 查看命名的实际路径。

67.jpg

JAVA_HOME 配置

有些应用程序将会读取系统 ${JAVA_HOME} 环境变量,通过安装 jenv 插件,切换 JDK 版本时,将会同步设置 ${JAVA_HOME} 变量。

jenv enable-plugin export
## 运行这个才会生效
exec $SHELL -l

jenv 使用教程

jenv versions

查看当前系统 jenv 管理所有 JDK 版本。

jenv versions

68.jpg

通过上面命令,我们知道当前系统所有 JDK 版本之后,通过下面命令切换 JDK 版本。

JDK 版本切换 JDK1.7

jenv local 1.7

69.jpg

这里需要注意的,jenv local 切换 JDK 版本只对当前文件夹有效,如果切换到其他文件夹,将会切换会当前默认 JDK 版本。

jenv shell

使用 jenv shell 使切换的 JDK 版本对整个 Shell session 有效。重启 Shell 终端或重新打开新的 Shell 终端,该配置失效。

jenv shell 9.0

jenv global

jenv global 将会设置一个全局默认的 JDK 版本,即使重启 Shell 窗口,该配置也不会改变。

jenv global 9.0

jenv 小问题

上面几个是 jenv 经常使用的指令,若想了解 jenv 其他指令,可以通过 jenv commands 查找其他指令。

使用 jenv 过程可能会发现,当切换 JDK 版本之后, ${JAVA_HOME} 环境变量没有改变,还是上一个 JDK 版本配置。

70.jpg

这时可以运行 exec $SHELL -l${JAVA_HOME} 将会变成当前版本路径。

最后

做个小调查,你还在用那个版本 JDK?各位小伙伴可以留言一下,嘿嘿~

相关文章
|
2月前
|
安全 架构师 Java
Java LTS版本进化秀:从8到21的欢乐升级之旅
困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。
|
3月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
703 0
|
4月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
209 1
|
9月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
464 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
6月前
|
JavaScript Java 关系型数据库
家政系统源码,java版本
这是一款基于SpringBoot后端框架、MySQL数据库及Uniapp移动端开发的家政预约上门服务系统。
215 6
家政系统源码,java版本
|
Java 中间件 测试技术
java依赖冲突解决问题之jar包版本冲突无法通过升降级解决时如何解决
java依赖冲突解决问题之jar包版本冲突无法通过升降级解决时如何解决
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
157 0
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
617 2
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
4307 1
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
886 1