macOS/Linux 使用 jenv 管理java版本

231 阅读2分钟
brew install jenv

# 添加已安装的 JDK
jenv add /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

# 切换 Java 版本
jenv global 1.8       # 设置全局为 1.8
jenv local 17         # 为某个项目设置为 17

✅ 第一步:查看当前 java 命令的路径

which java

输出可能类似:

/usr/bin/java

但是注意:/usr/bin/java 通常是 macOS 的系统代理,不是真实的 JDK 目录,我们需要用下面的方式找出真正路径。

✅ 第二步:查看当前 JDK 的真实安装路径

运行:

/usr/libexec/java_home -v 11

输出可能类似:

/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home

这个路径就是 Temurin 11 的真实 JDK 目录。

✅ 第三步:将它加入到 jenv

假设输出路径为:

/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home

那么执行命令:

jenv add /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home

✅ 第四步:验证是否添加成功

jenv versions

你应该能看到类似:

system
* 11.0

✅ 第五步:为项目设置 Java 版本

进入你的 Flutter 项目目录,运行:

jenv local 11.0

这会在当前目录创建一个 .java-version 文件,指明该项目使用 Java 11。

✅ 可选:设置全局默认版本

jenv global 1.8

例如:你全局想用 Java 8,Flutter 项目单独使用 Java 11,就可以这样配。


如你不确定 Temurin 是不是用 Homebrew 装的,也可以运行:

ls /Library/Java/JavaVirtualMachines/

列出所有 JDK,看是否有类似:

temurin-11.jdk
temurin-17.jdk
zulu-8.jdk

然后逐个用 jenv add 注册即可。

⚠️ 问题

jenv 在添加 Java 版本时尝试在 ~/.jenv/versions/ 下创建软链接失败,提示:

bash
复制编辑
ln: /Users/synapsor/.jenv/versions/temurin64-11.0.24: No such file or directory

这是因为 jenv 当前安装或配置不完整,缺少一些关键目录。我们来逐步修复:

✅ 解决步骤

① 检查 .jenv 目录结构是否完整

运行以下命令:

ls ~/.jenv/versions

如果提示目录不存在,请先手动创建它:

mkdir -p ~/.jenv/versions

然后再次执行:

jenv add /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home