JEnv简介
jenv是一个开源的 Java 环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本。
-
核心功能:jenv允许用户安装、切换、删除和列出不同的Java版本,自动设置JAVA_HOME环境变量,确保环境变量在不同Java版本间切换时能正确更新。它支持全局、本地和会话级别的版本控制,用户可以根据需要在不同级别设置特定的Java版本。
-
应用场景:jenv适用于多版本Java管理、工具链管理、开发环境标准化以及持续集成/持续部署等场景,可以提高开发效率,确保环境的一致性。
-
系统支持:jenv支持Mac、Linux和Windows系统,提供了一个简洁的命令行界面,易于使用和管理。
开源项目地址
对于linux和mac系统:GitHub - jenv/jenv: Manage your Java environment
对于windows系统:GitHub - FelixSelter/JEnv-for-Windows: Change your current Java version with one line
Windows系统中的安装步骤
-
访问github项目托管地址:GitHub - FelixSelter/JEnv-for-Windows: Change your current Java version with one line
-
下载项目到本地并解压。
-
配置环境变量:将解压缩目录添加到系统环境变量。示例:
-
在系统环境变量PATH中增加%JEnv%配置,并保存。
-
执行
jenv
命令,确认安装成功。示例:
常用命令
# 添加一个Java环境变量
jenv add <name> <path>
示例:jenv add jdk11 "D:\Program Files\Java\jdk-11.0.1"
# 列出由jenv管理的全部Java版本
jenv list
# 设置全局Java版本
jenv change <name>
示例:jenv change jdk11
# 从jenv管理的Java版本列表中删除某个Java版本
jenv remove <name>
示例:jenv remove jdk11
# 为当前Shell会话设置Java版本。该命令只在当前打开的命令行窗口或终端会话中有效,关闭会话后设置将失效。
jenv use <name>
示例:jenv use jdk11
# 清除当前Shell会话中设置的Java版本信息
jenv use remove
# 为当前目录及其所有子目录设置Java版本。在该目录及其子目录下的任何Shell会话中,都会使用指定的Java版本,而无需在每个会话中单独设置。
jenv local <name>
示例:jenv local jdk11
# 清除当前目录及其所有子目录中设置的Java版本
jenv local remove
# 允许jenv使用java目录中的javac、javaw或其他可执行文件
jenv link <Executable name>
示例:jenv link javac
# 卸载jenv并自动还原选择的Java版本
jenv uninstall <name>
示例:jenv uninstall jdk11
# 自动搜索要添加的Java版本
jenv autoscan [--yes|-y] <path>
示例:jenv autoscan "D:\Program Files\Java" 扫描当前目录中可以添加的Java版本,不写路径参数时会扫描整个系统
jenv autoscan -y "D:\Program Files\Java" 扫描并接受当前目录中可以添加的Java版本
工作原理
- JEnv.bat脚本会创建一个java.bat文件,该文件会调用具有正确版本的java.exe。
- 当通过powershell脚本命令更改Java版本相关的环境变量时,会将修改保存到临时文件(如下图的Home.tmp和path.tmp),并将相应变量信息传递给JEnv.bat。
- JEnv.bat会将接收到的环境变量配置信息通过PowerShell Script对环境变量信息进行设置应用,并在设置环境变量后,删除临时文件。