Macbook多版本Java JDK安装与切换(详解)
艺说IT 2024-08-11 17:05:02 阅读 62
文章目录
一、前言二、安装jenv2.1 jenv官网2.2 使用brew安装jenv2.3 设置环境变量2.4 验证jenv是否已安装
三、查看与切换jdk版本3.1 查看机器安装的jdk版本3.2 查看jenv管理的jdk版本3.3 添加到jenv管理3.4 设置全局java版本3.5 设置shell java版本
四、idea项目切换其他jdk五、总结
一、前言
java jdk 版本管理器,可以根据您的需求快速切换编译环境,这样就不需要卸载、重新安装的重复且麻烦操作,比如复现、调试漏洞需要在的不同的jdk版间切换,所以有版本管理器工具还是非常方便的。目前我用到的有python的管理工具anaconda,java jdk的管理工具jenv,所以本教程就是macbook使用jenv进行多版本java jdk的安装和切换。让我们开始学习吧~
二、安装jenv
2.1 jenv官网
<code>https://www.jenv.be/
https://github.com/jenv/jenv
2.2 使用brew安装jenv
brew install jenv
2.3 设置环境变量
export PATH="$HOME/.jenv/bin:$PATH" >> ~/.bash_profilecode>
eval "$(jenv init -)" >> ~/.bash_profile
2.4 验证jenv是否已安装
jenv doctor
输入 jenv doctor 验证,没问题的话就如下图:
若如官网所说,失败有error的情况,就按官方解决方法解决(我安装时没有遇到错误)。
<code>$ 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 : /Users/user/.jenv/libexec:/Users/user/.jenv/shims:/Users/user/.jenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[OK]Jenv is correctly loaded
观察到jenv
已正确加载,但 Java 尚未安装。
要确保JAVA_HOME
已设置,请确保启用该export
插件:
jenv enable-plugin export
exec $SHELL -l
如果还有问题,就先用brew安装java jdk,然后再重新输入jenv doctor进行验证。
brew install AdoptOpenJDK/openjdk/adoptopenjdk8
三、查看与切换jdk版本
3.1 查看机器安装的jdk版本
当你使用brew或者dmg方式安装的jdk,使用以下命令就能列出所有安装过的版本与路径。
/usr/libexec/java_home -V
3.2 查看jenv管理的jdk版本
查看当前有哪些java jdk由jenv管理。
<code>jenv versions
3.3 添加到jenv管理
<code>jenv add /Users/stephen/Library/Java/JavaVirtualMachines/azul-11.0.22/Contents/Home
3.4 设置全局java版本
全局java版本,重写打开终端java版本任保持。
<code>jenv global zulu64-11.0.22
3.5 设置shell java版本
只用于当前shell窗口,退出终端后就会变回全局的java版本。
<code>jenv shell zulu64-1.7.0.352
四、idea项目切换其他jdk
步骤:File -> Project Structure -> Project -> SDK -> Add JDK -> 找到对应JDK home目录(查看目录:/usr/libexec/java_home -V),确认即可,如下图:
这就添加进来了。
五、总结
不管是python还是java jdk,你有使用到的编程语言都可以搜索一下对应的版本管理器,当你需要频繁切换编译环境的时候,这时候版本管理器的重要性就体现出来了。
上一篇: R 语言入门 —— tidyverse
下一篇: 【C++/STL深度剖析】priority_queue 最全解析(什么是priority_queue? priority_queue的常用接口有哪些?)
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。