你有没有遇到过这样的场景:
装了 JDK,却还要回头配置 JAVA_HOME;换一个项目,又要想办法切换 Java 版本;明明只是想跑个 Java 程序,却先被环境变量卡住。
jEnv 做的事情很直接:
它是一个命令行工具,帮你忘掉怎么设置 JAVA_HOME 环境变量。
这篇文章只做一件事:把 jEnv 的安装、Shell 配置、插件启用、JDK 添加和版本切换,整理成一份可以照着做的清单。
jEnv 是一个 command line tool。
它的目标不是让你记住更多命令,而是让你不用反复手动处理 JAVA_HOME。
如果你只想记住一句话,可以记这一句:
jEnv 帮你管理 Java 环境,让不同目录、不同 Shell、不同全局配置都能使用指定的 JDK。
安装方式分两类:普通 Linux / OS X 安装,以及 Mac OS X 通过 Homebrew 安装。
git clone https://github.com/jenv/jenv.git ~/.jenv这一步会把 jEnv 克隆到你的 ~/.jenv 目录。
brew install jenv如果你在 Mac 上习惯用 Homebrew,这一步会更直接。
第一步先完成安装,后面所有配置才有入口。
安装完成后,下一步是让 Shell 能找到 jEnv,并在启动时初始化它。
这里根据你使用的 Shell 分成 Bash 和 Zsh 两种。
把下面两行写入 ~/.bash_profile:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile第一行把 jEnv 的 bin 目录加入 PATH。
第二行在 Bash 启动时执行 jEnv 初始化。
把下面两行写入 ~/.zshrc:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrcZsh 的配置文件不同,但动作一样:加入 PATH,然后初始化 jEnv。
Shell 配置的关键不是复杂,而是要让每次打开终端时 jEnv 自动生效。
配置 Shell 之后,还需要启用 export plugin。
先执行初始化:
eval "$(jenv init -)"再启用插件:
jenv enable-plugin export这个步骤在原始流程里单独列出,说明它不是可有可无的装饰项,而是 jEnv 工作链路里明确需要执行的一步。
执行完之后,重启 Shell:
exec $SHELL -l改完 Shell 配置后,不重启 Shell,就像写完配置但还没让它重新加载。
jEnv 本身负责管理 Java 环境,但你需要把已经安装好的 JDK 或 JRE 添加进去。
示例一:添加系统里的 Java 1.6:
jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home添加后,输出类似:
oracle64-1.6.0.39 added示例二:添加另一个 JDK:
jenv add /Library/Java/JavaVirtualMachines/jdk17011.jdk/Contents/Home添加后,输出类似:
oracle64-1.7.0.11 added这一步的本质是:
你把 JDK / JRE 的 Home 路径交给 jEnv,jEnv 把它纳入可管理版本列表。
添加完成后,用下面的命令查看版本列表:
jenv versions示例输出:
system
oracle64-1.6.0.39
* oracle64-1.7.0.11 (set by /Users/hikage/.jenv/version)这里有三个信息点:
system 表示系统默认 Java。oracle64-1.6.0.39 是已经加入 jEnv 的版本。* 的 oracle64-1.7.0.11 是当前生效版本。括号里的路径说明这个版本是由 /Users/hikage/.jenv/version 设置的。
先会看版本列表,再谈切换版本。
如果你希望默认都使用某个 JDK,可以配置 global version:
jenv global oracle64-1.6.0.39这个命令适合设置一个默认版本。
例如你平时大多数场景都希望用 oracle64-1.6.0.39,那就把它设为 global。
global 解决的是“默认用哪个 Java”的问题。
如果你希望某个目录使用特定 JDK,可以配置 local version:
jenv local oracle64-1.6.0.39这个命令适合按目录切换版本。
你进入某个目录后设置 local,后续这个目录就可以使用指定版本。
local 解决的是“这个目录用哪个 Java”的问题。
如果你只是想在当前 Shell 里临时使用某个版本,可以配置 shell instance version:
jenv shell oracle64-1.6.0.39这个命令适合临时切换。
它不像 global 那样影响默认版本,也不像 local 那样绑定目录。
shell 解决的是“当前这个终端会话用哪个 Java”的问题。
可以直接用这张表记住:
配置方式 | 命令示例 | 适合场景 |
|---|---|---|
global | jenv global oracle64-1.6.0.39 | 设置默认 Java 版本 |
local | jenv local oracle64-1.6.0.39 | 给当前目录设置 Java 版本 |
shell | jenv shell oracle64-1.6.0.39 | 给当前 Shell 实例临时设置版本 |
如果你不知道先用哪个,可以按这个顺序理解:
global。local。shell。如果你只想快速跑通,可以按这个清单来:
eval "$(jenv init -)"。jenv enable-plugin export。exec $SHELL -l 重启 Shell。jenv add 添加 JDK / JRE。jenv versions 查看版本。jenv global、jenv local 或 jenv shell 选择版本。每一步都不复杂,但顺序很重要。
jEnv 的上手路径,本质就是:安装它、初始化它、把 JDK 加进去、再选择你要用哪个版本。
jEnv 的定位非常清楚:
它不是一个庞大的平台,也不是一套复杂系统。
它就是一个命令行工具,帮你忘掉怎么设置 JAVA_HOME。
当你需要管理多个 Java 版本时,先把 JDK / JRE 添加到 jEnv,再根据场景选择:
jenv globaljenv localjenv shell从今天开始,你可以先做第一步:
jenv versions看看当前有哪些 Java 版本已经被 jEnv 管理。
如果还没有,就用 jenv add 把它们加进来。
今天的分享就到这里。后续我会持续为大家带来实用的技术干货和前沿的技术资讯。如果你对工具链探索感兴趣,我会在公众号「DevLlama」持续分享前端工程化、构建优化等实战经验,欢迎关注,不要错过任何精彩内容!
支持我们,点赞或分享到朋友圈!