JEnv 与 JEnv-for-Windows:Java 开发者的版本控制利器

在Java开发领域,随着技术的不断进步,不同的项目可能需要使用不同版本的Java Development Kit (JDK)。为了有效管理这些多样化的环境需求,`JEnv` 和其针对Windows系统的实现 `JEnv-for-Windows` 成为了众多开发者的选择。这两个工具旨在提供一种简便的方式来切换和管理多个Java版本,确保开发和测试环境的一致性与灵活性。

什么是JEnv?

JEnv 是一个类似于Pyenv的Java版本管理工具,专为Java开发者设计。它允许你在同一台机器上安装多个JDK,并能够快速、方便地在这些版本之间进行切换。JEnv通过管理环境变量,确保当你运行Java命令时,系统会自动使用你所选择的JDK版本。这对于那些需要维护多个项目,每个项目依赖不同Java版本的开发者来说,无疑是一个巨大的便利。

为何需要JEnv-for-Windows?

尽管JEnv本身主要面向Unix-like系统(如Linux和macOS),但在Windows平台上直接使用可能会遇到兼容性问题。JEnv-for-Windows 的出现填补了这一空白,它对JEnv进行了调整和优化,使其能够无缝运行于Windows环境中。这意味着Windows用户现在也能享受到JEnv带来的版本管理便利,无需担心操作系统带来的限制。

JEnv 安装(非Windows)

对于Linux和macOS用户,可以通过以下步骤安装JEnv:

  1. 使用Homebrew(macOS推荐):

    1
    brew install jenv
  2. 手动安装:

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

安装完成后,需要将JEnv的初始化脚本添加到shell配置文件(如.bashrc, .zshrc)中,并执行相应的初始化命令:

1
2
3
4
echo 'export JENV_ROOT="$HOME/.jenv"' >> ~/.bashrc
echo 'export PATH="$JENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(jenv init -)"' >> ~/.bashrc
source ~/.bashrc

JEnv-for-Windows 安装

  1. 克隆此仓库
  2. 将其添加到路径中
  3. 运行一次 jenv,让脚本完成其余的工作
  4. 如果使用 cmd,需要调用批处理文件。如果使用 PowerShell,则应调用 /src/jenv.ps1
  5. 有些人报告将 JEnv 放入 C:/Programs 文件夹时遇到问题,因为需要管理员权限
  6. 希望能帮到你。如果还有问题,请打开一个 issue

警告:

有时在进入指定本地 jenv 的新目录时需要调用 jenv。这将为当前 shell 设置你的 JAVA_HOME,确保像 Maven 这样的工具能正常工作。

使用方法 (注意: 本地覆盖全局。本地优先于全局)

  1. 添加一个新的 Java 环境(需要绝对路径)
    jenv add <name> <path>
    示例: jenv add jdk15 D:\Programme\Java\jdk-15.0.1

  2. 为当前会话更改 Java 版本
    jenv use <name>
    示例: jenv use jdk15
    用于脚本的环境变量:
    —PowerShell: $ENV:JENVUSE="jdk17"
    —CMD/BATCH: set "JENVUSE=jdk17"

  3. 清除当前会话的 Java 版本
    jenv use remove
    示例: jenv use remove
    用于脚本的环境变量:
    —PowerShell: $ENV:JENVUSE=$null
    —CMD/BATCH: set "JENVUSE="

  4. 全局更改 Java 版本
    jenv change <name>
    示例: jenv change jdk15

  5. 在此文件夹中始终使用该 Java 版本
    jenv local <name>
    示例: jenv local jdk15

  6. 清除此文件夹的 Java 版本
    jenv local remove
    示例: jenv local remove

  7. 列出所有的 Java 环境
    jenv list
    示例: jenv list

  8. 从 JEnv 列表中移除现有的 JDK
    jenv remove <name>
    示例: jenv remove jdk15

  9. 启用 Java 目录中的 javac、javaw 或其他可执行文件
    jenv link <Executable name>
    示例: jenv link javac

  10. 卸载 jenv 并自动恢复你选择的 Java 版本
    jenv uninstall <name>
    示例: jenv uninstall jdk17

  11. 自动搜索要添加的 Java 版本
    jenv autoscan [–yes|-y] ?<path>?
    示例: jenv autoscan "C:\Program Files\Java"
    示例: jenv autoscan // 将搜索整个系统
    示例: jenv autoscan -y "C:\Program Files\Java" // 将接受默认设置

工作原理

此脚本创建一个 java.bat 文件,该文件调用具有正确版本的 java.exe
当 PowerShell 脚本更改环境变量时,它们会被导出到临时文件并由批处理文件应用
为 PowerShell 脚本添加了一个附加参数 “–output” 别名 “-o”,将为批处理创建临时文件。见下图

SystemEnvironmentVariablesHirachyShell

SystemEnvironmentVariablesHirachyPowerShell PNG