当前位置: 首页 > news >正文

活到老学到老之使用jenv管理多个java版本

我本地安装的java版本是1.8

testmanzhang@TestMandeMacBook-Pro ~ % /usr/libexec/java_home -v 1.8
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

这个版本不是通过 JDK 安装的,是 Java Applet Plugin(浏览器用的 Java 运行环境),并不是完整的 JDK。

删除当前版本

testmanzhang@TestMandeMacBook-Pro ~ % sudo rm -rf "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin"
testmanzhang@TestMandeMacBook-Pro ~ % sudo rm -rf  /Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk

检查是否删除成功

java -version
javac -version
/usr/libexec/java_home -V

安装java 8(Temurin 版)

brew install --cask temurin@8

安装完成后检查

/usr/libexec/java_home -V

安装 Java 21

brew install openjdk@21

安装完成后执行/usr/libexec/java_home -V,但只有1.8的信息:

==> Pouring openjdk@21--21.0.8.sonoma.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it withsudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdkopenjdk@21 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.If you need to have openjdk@21 first in your PATH, run:echo 'export PATH="/usr/local/opt/openjdk@21/bin:$PATH"' >> ~/.zshrcFor compilers to find openjdk@21 you may need to set:export CPPFLAGS="-I/usr/local/opt/openjdk@21/include"
==> Summary
🍺  /usr/local/Cellar/openjdk@21/21.0.8: 600 files, 330.4MB
==> Running `brew cleanup openjdk@21`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
==> No outdated dependents to upgrade!
==> Caveats
==> openjdk@21
For the system Java wrappers to find this JDK, symlink it withsudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdkopenjdk@21 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.If you need to have openjdk@21 first in your PATH, run:echo 'export PATH="/usr/local/opt/openjdk@21/bin:$PATH"' >> ~/.zshrcFor compilers to find openjdk@21 you may need to set:export CPPFLAGS="-I/usr/local/opt/openjdk@21/include"
testmanzhang@TestMandeMacBook-Pro ~ % nano ~/.zshrc
testmanzhang@TestMandeMacBook-Pro ~ % 
testmanzhang@TestMandeMacBook-Pro ~ % 
testmanzhang@TestMandeMacBook-Pro ~ % 
testmanzhang@TestMandeMacBook-Pro ~ % 
testmanzhang@TestMandeMacBook-Pro ~ % 
testmanzhang@TestMandeMacBook-Pro ~ % /usr/libexec/java_home -V
Matching Java Virtual Machines (1):1.8.0_462 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
testmanzhang@TestMandeMacBook-Pro ~ % 

按照提示执行:

sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk

使用jenv管理java版本的话不用执行:

echo 'export PATH="/usr/local/opt/openjdk@21/bin:$PATH"' >> ~/.zshrc

编辑~/.zshrc,在文件顶部添加

export PATH="$HOME/.jenv/shims:$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

同时注释掉原有的java环境变量:

#JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home"
#PATH=$JAVA_HOME/bin:$PATH:.
#CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
#export JAVA_HOME
#export PATH
#export CLASSPATH

保存后,执行:

source ~/.zshrc

之后这步很关键,就是要重启终端

testmanzhang@TestMandeMBP ~ % which java
/Users/testmanzhang/.jenv/shims/java

不然:

testmanzhang@TestMandeMBP ~ % which java
/usr/bin/java

which java 指向了 ~/.jenv/shims/java,说明 jenv 正常工作

之后添加java版本

jenv add /usr/local/Cellar/openjdk@21/21.0.8/libexec/openjdk.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home

之后rehash

testmanzhang@TestMandeMBP ~ % jenv rehash

jenv命令

testmanzhang@TestMandeMBP ~ % jenv doctor
[OK]	No JAVA_HOME set
[OK]	Java binaries in path are jenv shims
[OK]	Jenv is correctly loaded
testmanzhang@TestMandeMBP ~ % jenv versions* system (set by /Users/testmanzhang/.jenv/version)1.81.8.0.4622121.021.0.8openjdk64-21.0.8temurin64-1.8.0.462
testmanzhang@TestMandeMBP ~ % 

使用jenv global 切换不同的版本

testmanzhang@TestMandeMBP ~ % jenv global 21.0.8
testmanzhang@TestMandeMBP ~ % jenv rehash
testmanzhang@TestMandeMBP ~ % java -version
openjdk version "21.0.8" 2025-07-15
OpenJDK Runtime Environment Homebrew (build 21.0.8)
OpenJDK 64-Bit Server VM Homebrew (build 21.0.8, mixed mode, sharing)
http://www.dtcms.com/a/321506.html

相关文章:

  • 微型导轨在半导体制造中有哪些高精密应用场景?
  • 【AI工具】解放双手,操控浏览器的工具对比,来了
  • 基于深度学习的nlp
  • ctfshow_萌新web9-web13-----rce
  • Java面试初中级:线程池的主要参数有哪些?
  • GridKernalGateway
  • 谷粒商城:检索服务
  • WSL 安装 Ubuntu
  • 50系显卡ubuntu20.04安装显卡驱动,解决gazebo不调用显卡的问题
  • 接口自动化-YAML
  • 【其他分类】Showrunner AI版的Netflix 互动故事创作平台 进行动画生成与微调、角色场景创建
  • A100用transformers推理gpt-oss
  • 【无标题】无名管道
  • (第二篇)spring cloud之Eureka注册中心
  • JDK、eclipse的安装,配置JDK、Tomcat并使用eclipse创建项目
  • SpringBoot 处理 RESTful 服务中的异常与错误
  • 我和 ChatGPT:一次用 AI 反观自己的技术成长之旅
  • Android 中解决 Button 按钮背景色设置无效的问题
  • Redis 7主从复制与哨兵模式搭建
  • k8s-nfs实现创建sc的两种方式
  • ConcurrentDictionary 详解:.NET 中的线程安全字典
  • 并发编程(五)ThreadLocal
  • 生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用
  • Rust语言序列化和反序列化vec<u8>,serde库Serialize, Deserialize,bincode库(2025年最新解决方案详细使用)
  • AI 智能体框架:LlamaIndex
  • 国内如何使用体验到GPT-5呢?附GPT快速升级Plus计划保姆级教程
  • 大模型量化上溢及下溢解析
  • 达梦DMFLDR导出和导入的方法
  • 以任务为中心的智能推荐系统架构设计:原理、实现与挑战分析
  • 深入理解Java集合框架:核心接口、实现类与实战选择