mac 使用 jenv 管理多个版本的 jdk

1. 安装 jenv

brew install jenv

mac brew 快速配置看这里 https://gitee.com/cunkai/HomebrewCN

也可直接从 github 拉取

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

2. 配置环境

查看shell是 zsh还是bash

echo $0

mac 默认是 zsh

zsh

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

bash

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

3. 验证 jenv 是否安装

aaron@AarondeMacBook-Pro ~ % jenv doctor
[OK]	No JAVA_HOME set
[ERROR]	Java binary in path is not in the jenv shims.
[ERROR]	Please check your path, or try using /path/to/java/home is not a valid path to java installation.
	PATH : /opt/homebrew/Cellar/jenv/0.5.4/libexec/libexec:/Users/aaron/.jenv/shims:/Users/aaron/.jenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion Tech Preview.app/Contents/Public:/Library/Apple/usr/bin
[OK]	Jenv is correctly loaded

注意:如果出现

[ERROR] JAVA_HOME variable already set, scripts that use it directly could not use java version set by jenv
[ERROR] Java binary in path is not in the jenv shims.
[ERROR] Please check your path, or try using /path/to/java/home is not a valid path to java installation.

需要检查两个地方的配置

  1. 配置文件中 .zshrc 或 .bash_profile 配置了 JAVA_HOME 需删除或注释 之后 source
  2. 步骤二设置的不对

正常输出结果

aaron@AarondeMacBook-Pro  /Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home  jenv doctor
[OK]	JAVA_HOME variable probably set by jenv PROMPT
[OK]	Java binaries in path are jenv shims
[OK]	Jenv is correctly loaded

4. 查找已安装的JDK目录

/usr/libexec/java_home -V
aaron@AarondeMacBook-Pro / % /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
    17.0.2 (arm64) "Oracle Corporation" - "Java SE 17.0.2" /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home
    11.0.14 (x86_64) "Oracle Corporation" - "Java SE 11.0.14" /Library/Java/JavaVirtualMachines/jdk-11.0.14.jdk/Contents/Home
    1.8.321.07 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_322 (arm64) "Azul Systems, Inc." - "Zulu 8.60.0.21" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
    1.8.0_321 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home

通过 jenv add 命令就可以把需要管理的 JDK 添加到 jenv

5. 向 jenv 添加 JDK 版本

jenv add /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home

6. 删除添加到 jenv 的 JDK 版本

添加新版本时,每个版本都会一次性自动加入多个不同版本,有些就是简称而已,其实都指向同一个版本,这里便于区分,可以将简略版本删除

jenv remove 17

7. 查看添加到 jenv 的 JDK 版本

jenv versions
aaron@AarondeMacBook-Pro / % jenv versions
* system (set by /Users/aaron/.jenv/version)
  1.8
  1.8.0.322
  17
  17.0
  17.0.2
  oracle64-17.0.2
  zulu64-1.8.0.322

system 即 jenv global 指定

8. jenv 指定 JDK 版本

jenv local 1.8

若提示没有权限 使用 sudo 即可
注意:慎用此命令,此命令会在当前目录下生成名为 .java-version 的隐藏文件

9. 指定全局 JDK 版本

jenv global oracle64-17.0.2

ps: global 不会覆盖已经使用了 jenv local 指定了 JDK 版本的命令行窗口

10.配置别名实现快速切换

vim ~/.zshrc 或者 vim ~/.bash_profile

alias jdk8_intel='jenv global openjdk64-1.8.0.292'
alias jdk8='jenv global zulu64-1.8.0.322'
alias jdk17='jenv global oracle64-17.0.2'
alias jdk18='jenv global oracle64-18.0.1.1'

效果

aaron@AarondeMacBook-Pro  ~  jdk8
aaron@AarondeMacBook-Pro  ~  java -version

openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Zulu 8.60.0.21-CA-macos-aarch64) (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Zulu 8.60.0.21-CA-macos-aarch64) (build 25.322-b06, mixed mode)

11. 查看当前jdk所在位置

jenv which java
aaron@AarondeMacBook-Pro versions % jenv which java
/Users/aaron/.jenv/versions/1.8/bin/java

/Users/aaron/.jenv/versions 目录,所有的 jdk 版本都在这里,这里只是引用地址
通过 ls -l 可以看到实际的安装目录

aaron@AarondeMacBook-Pro versions % ls -l
total 0
lrwxr-xr-x  1 aaron  staff  58  5 28 20:33 1.8 -> /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
lrwxr-xr-x  1 aaron  staff  62  5 28 20:26 17.0 -> /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home
lrwxr-xr-x  1 aaron  staff  62  5 28 20:26 oracle64-17.0.2 -> /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home
lrwxr-xr-x  1 aaron  staff  58  5 28 20:33 zulu64-1.8.0.322 -> /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

mac jdk 默认安装目录

安装目录统一在 /Library/Java/JavaVirtualMachines/

参考文档
https://github.com/jenv/jenv

### 安装和配置jEnv #### 使用Homebrew安装jEnv 为了在Mac上安装`jEnv`,可以利用包管理器Homebrew来简化这一过程。通过终端执行下面的命令完成安装: ```bash brew install jenv ``` 这一步骤会自动处理好`jEnv`所需的一切依赖关系并将其部署到系统中[^1]。 #### 添加Java版本jEnv 一旦`jEnv`被成功安装之后,下一步就是向其添加不同版本Java开发套件(JDK)。假设已经预先下载并安装好了所需的JDK版本,则可以通过指定路径的方式让`jEnv`识别这些版本。例如对于Java 8而言,操作如下所示: ```bash jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/ ``` 此命令将会把特定版本JDK加入到`jEnv`管理体系之下,并允许用户方便地切换使用不同的Java版本[^3]。 #### 设置全局默认Java版本 当有多个Java版本可供选择时,设置一个全局默认使用版本是非常重要的。可通过下述指令实现这一点: ```bash jenv global <version> ``` 这里的`<version>`应替换为实际想要设为默认的那个具体版本号(比如`1.8.0.25`)。这样做的好处在于,在新开启的shell环境中无需再次手动指定要使用Java版本[^4]。 #### 更新Shell配置文件使更改生效 为了让上述所做的修改立即起效以及持久化保存下来,还需要编辑当前用户的shell初始化脚本(如`.bash_profile`, `.zshrc`等),追加以下两行内容: ```bash export PATH="$HOME/.jenv/bin:$PATH" eval "$(jenv init -)" ``` 这样做能够确保每次启动新的shell实例时都会加载最新的`jEnv`环境变量设定,从而保障Java版本管理功能正常运作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值