新版mac配置多版本JDK切换和maven套件

news/2025/1/22 9:20:19/文章来源:https://www.cnblogs.com/63forever/p/18290939

新版mac配置多版本JDK和maven套件

新版本的macOS Sonoma系统配置多版本的JDK和Maven开发套件。有平时开发和学习用到的JDK是不同版本的需求,就直接安装多个版本的JDK,使用的时候直接命令进行对应版本的切换,要做到切换JDK版本,可以自己配置并在终端切换,或者使用java的版本管理工具jenv。目前我用到的是自己配置,jenv还要自行去了解~~


安装java

  1. mac安装java的途径就比较多了,直接下载对应机型和版本的dmg安装文件进行安装、homebrew包管理器、mac是自带git和python的,所以也可以克隆和curl之类的命令安装
  2. jdk下载地址
  • oracle官网,现在下载jdk1.8是需要登陆的,高版本17、21、22不需要刻意直接下oracle官网
  • WEJDK学习站,各种版本的jdk整合WEJDK学习站
  • 企业平台zulu企业平台、adoptium企业平台

根据需求去下载对应版本的jdk,如果没有强制要求一般是openjdk,不用oracle版本的不用去担心收费问题
这里是下载了dmg文件安装了jdk8和17,mac安装java的路径是固定位置/Library/Java/JavaVirtualMachines/,使用访达>>前往文件夹输入这个路径就可以找到,同时在终端输入/usr/libexec/java_home -V可以查看安装了那些版本
下载jdk

~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):17.0.9 (arm64) "Oracle Corporation" - "Java SE 17.0.9" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home1.8.381.09 (arm64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home1.8.0_381 (arm64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
  1. 配置java环境
    新版的macOS Sonoma用的终端都是zsh shell,而不是bash shell,所以配置文件就只要配置.zshrc文件就可以了,不用再去额外创建.bash_profile,他既然更新了就用新功能呗,肯定是新的更好用吧,当然继续沿用之前创建bash_profile也是没问题的
    本机macOS 14.5,从macOS Catalina(10.15) 开始,macOS的默认终端从bash变成了zsh,
    我们常说的环境变量修改有两种方式,分为系统级别(对所有用户生效)和用户级别(对当前用户生效),像/etc/profile这种在/etc目录下的配置则都属于全局配置,~/则属于用户级别的,当然 macOS 也不是服务器,一般就自己一个人用,也不用分得太清楚
    环境变量的加载顺序依次从上向下查找,比较详细的mac介绍可以参考macOS 环境变量加载探究、几种配置文件的区别
$/etc/profile
$/etc/paths
$ ~/.bash_profile
$ ~/.bash_login
$ ~/.profile
$ ~/.zshrc

配置文件

#jdk安装路径
export JAVA_HOME_17=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export JAVA_HOME_8=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
# 通过查询变量配置路径
# export JAVA_HOME_17=`/usr/libexec/java_home -v 17`
# export JAVA_HOME_8=`/usr/libexec/java_home -v 1.8.0_381`export MAVEN_HOME=/opt/homebrew/Cellar/maven/3.9.6
export JAVA_HOME=$JAVA_HOME_17
export PATH=$PATH:$JAVA_HOME/bin# 给上面的变量一个别名
alias jdk17="export JAVA_HOME=$JAVA_HOME_17"
alias jdk8="export JAVA_HOME=$JAVA_HOME_8"
export PATH=$PATH:$MAVEN_HOME/bin# 配置文件格式如下
# export 自定义环境变量名1 = 路径1
# export 自定义环境变量名2 = 路径2
# 自定义环境变量名3 = 路径3
# export 自定义环境变量名3# export PATH=$PATH:$自定义环境变量名1:$自定义环境变量名2
# export PATH=$PATH:路径3
# 按 esc 退出编辑模式,输入 :wq 保存并退出vim
# 注意一下:多个变量用英文冒号:隔开,$PATH要添加回去PATH中,否则系统内部原有命令失效。# vim常用的命令:
# vim [filename.ext]
# # 输入 i 回车进入编辑模式
# # 编辑内容...
# 按 esc 键退出编辑模式,然后输入以下带冒号:的命令
# :wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用)
# :w 保存但不退出(常用)
# :w! 若文件属性为『只读』时,强制写入该档案
# :q 离开 vi (常用)
# :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。

.zshrc中配置完成后在终端输入source .zshrc使配置生效,如果是使用创建.bash_profile方式配置则需要在.zshrc配置文件中追加source ~/.bash_profile命令即可在关闭终端或重启电脑时也能正常生效,意为在启动终端时也加载一下bash_profile文件下的配置。使用java -version进行验证,我配置的别名命令是jdk8、jdk17进行jdk的切换,能正确输出版本信息则配置成功。
这里要注意下,在上面配置文件中,export JAVA_HOME=$JAVA_HOME_17一定要指定一个默认版本,不然会影响到maven,在使用maven时会提示
The JAVA_HOME environment variable is not defined correctly
this environment variable is needed to run this program.

➜  ~ mvn -version
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
➜  ~

export PATH=$PATH:$JAVA_HOME/bin其中$PATH一定要在前面追加,否则会导致版本无法切换成功,这个其实就是一个环境变量的优先级和覆盖问题,在windows机器上也会出现,配置了正确的java系统环境变量但是版本信息不对,一般的解决办法是在PATH中把java的路径放在最前面,这样在加载时优先加载就可以解决,至少我之前的习惯是这样,而且也没出现过问题,以下是错误复现,可以看到在切换为jdk8后输出的信息依然是17.0.9

➜  ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):17.0.9 (arm64) "Oracle Corporation" - "Java SE 17.0.9" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home1.8.381.09 (arm64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home1.8.0_381 (arm64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
➜  ~ java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
➜  ~ jdk8
➜  ~ java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
➜  ~

在终端输入source .zshrc使配置生效之后关闭终端重新打开。输入切换命令,正确输出信息即为配置成功

➜  ~ java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
➜  ~ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):17.0.9 (arm64) "Oracle Corporation" - "Java SE 17.0.9" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home1.8.381.09 (arm64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home1.8.0_381 (arm64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
➜  ~ jdk8
➜  ~ java -version
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
➜  ~ jdk17
➜  ~ java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
➜  ~

安装maven

  1. 下载maven
    下载所需要的maven版本并解压到合适的位置,一般是在个人文件夹内创建一个开发相关的文件夹,放在里面 maven官方下载地址
  2. 配置maven
    maven要配置的内容除了环境变量还有setting文件,根据个人喜好和需求配置setting中的本地仓库<localRepository>、镜像节点<mirror>和私服信息<server>

maven环境变量

export MAVEN_HOME=/opt/homebrew/Cellar/maven/3.9.6
export PATH=$PATH:$MAVEN_HOME/bin

setting配置

<localRepository>/Users/username/repo</localRepository>
##阿里云仓库
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
<servers><server><id>nexus-releases</id><username>your-username</username><password>your-password</password></server><server><id>nexus-snapshots</id><username>your-username</username><password>your-password</password></server></servers>

配置完成后进行验证,在终端输入mvn -v命令,显示版本信息即为正确,可能遇到的错误The JAVA_HOME environment variable is not defined correctly,在上面jdk配置默认的版本即可解决export JAVA_HOME=$JAVA_HOME_17

➜  ~ mvn -v
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/homebrew/Cellar/maven/3.9.6/libexec
Java version: 17.0.9, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "14.5", arch: "aarch64", family: "mac"
➜  ~ java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
➜  ~ jdk8
➜  ~ mvn -v
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/homebrew/Cellar/maven/3.9.6/libexec
Java version: 1.8.0_381, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "14.5", arch: "aarch64", family: "mac"
➜  ~ java -version
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
➜  ~

参考资料:
macOS 环境变量加载探究
/etc/profile、etc/paths、~/.profile几种配置文件的区别

![jdk安装路径](https://img2024.cnblogs.com/blog/1150701/202407/1150701-20240710052655401-627560672.png)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741446.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.show

学习 Admonitions(警告) - Material for MkDocs (wdk-docs.github.io) 提示 - Material for MkDocs 中文文档 (llango.com) Buttons(按钮) - Material for MkDocs (wdk-docs.github.io) 建议去看这些网站,更为详细。常用功能 便利贴 ​​ 开启 markdown_extensions:- admoniti…

5.更多

发现一个项目与 MkDocs 类似的项目 PyMdown 拓展文档 ,等待探索。1.排版模仿 以下网站使用 MkDocs 构建Material for MkDocs 的美化 - Charles Les Notebook (charleschile.com)Documentation - Home Assistant (home-assistant.io)Godot Docs – master branch — Godot Engi…

6.附录

安装插件 在 MkDocs 中,插件通常是通过 pip​ 工具安装的。你可以使用以下步骤来安装和配置 MkDocs 插件。 1.使用 pip​ 命令安装你需要的插件。例如 pip install pymdown-extensions‍ 2.更新 mkdocs.yml​ 文件。 ‍ 3.使用 mkdocs serve​ 命令本地预览你的文档网站。 ‍ …

2.快速上手MkDocs

快速上手 !!! info "注意" 每次使用 MkDocs 首先进入 python 虚拟环境。 创建项目 mkdocs new ~/mkdocs/预览网站 cd ~/mkdocs/ mkdocs serve 127.0.0.1:8000​ 预览效果 ​​ 构建网站 mkdocs build项目结构 项目结构 ├── docs/ │ └── index.md ├── …

谷歌语法

谷歌语法:帮助我们更好的检索有用信息 1、site:指定域名 例如:在博客园当中查找学习文章 site:cnblogs.com2、intitle:搜索网页标题中的关键字 例如:在博客园当中查找网页标题中包含mysql的学习文章 site:cnblogs.com intitle:MYSQL常用SQL语句3、intext:搜索网页正文中的…

证书-双证书请求文件

1.背景关于数字证书、数字信封、OID等基本知识,此文不做赘述。在传统的数字信封体系中,我们的流程大概这样的。这里有个值得注意的点是: 节点1用于加密对称密钥的公钥和节点3用于签名的私钥,它们是否可以是同一对。 基于这个思想,我们有了单证书体系和双证书体系。 其原因…

[数据结构] 二叉搜索树基本操作

这篇文章记录了二叉搜索树的基本操作定义 二叉搜索树是一种特殊的二叉树,其定义如下:空树是二叉搜索树。 若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。 若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。 二…

014 批处理系统

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 本章目的保障系统安全 多应用支持本章需要实现的新功能构造包含操作系统内核和多个应用程序的单一执行程序 通过批处理支持多个程…

DOM属性

常用 DOM 属性innerHTML:用于获取或设置元素的 HTML 内容。 可以直接插入 HTML 代码,适合处理复杂的 HTML 结构。element.innerHTML = <p>New content</p>; console.log(element.innerHTML);innerText:用于获取或设置元素的文本内容,只包括可见的文本。 会触发重…

【一天一点.NET小知识】运用向量VectorT加速求和计算

随着 .NET 版本的演进,从 .NET Standard 2.0 版本开始,支持 Vector<T> 类型。 Vector<T> 类型:表示指定数值类型(适用于并行算法的低级别优化)的单个向量。 假如我们有一个求和函数接受一个int数组入参,当它的长度大于等于8及其倍数以上时,那么我们就可以考…

实战篇——CSRF漏洞pikachu靶场实战

实战篇——CSRF漏洞pikachu靶场实战 CSRF的原理 攻击者利用用户在某个网站上的已登录状态,诱使用户点击恶意链接,恶意页面会向服务器自动发送预先准备好的恶意请求。由于请求中自动包含了用户的认证凭证,服务器会误以为是合法的用户操作,从而执行恶意请求。 CSRF的分类 (1)…

Bulldog_2 靶机提权

一、目标环境 攻击者(kali)、目标服务器(ubuntu) 二、信息收集 1、探测靶机 使用fscan进行探测 ./fscan -h ip 段发现目标地址,并且还发现对方开启了80端口 三、目标站点的访问以及检测然后发现两个接口,分别是登陆和注册的然后就是在登陆接口这边尝试一下弱口令发现并不…