MacOS之Java环境搭建

标签: Java 分类: 操作系统 创建时间:2020-10-25 06:13:30 更新时间:2023-10-20 11:23:26

1.HomeBrew

这是安装brew的方法

参考文章:
1.HomeBrew和HomeBrew Cask的安装和使用 (对于brew的安装和使用讲了很多)

2.JDK安装

2.1手动安装

从OpenJDK下载页面手动安装:
(1) 从http://jdk.java.net/11/下载适用于Mac OSX的OpenJDK 11

(2) 解压文档,并将生成的jdk-11.jdk文件夹放入您的/Library/Java/JavaVirtualMachines/文件夹,因为这是JDK安装的标准和预期位置。您也可以在现实中随意安装。

配置环境变量,和Linux中一样,就是在~/.bash_profile文件中添加环境变量。

1
2
3
4
5
6
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.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
参考文章:
1.macOS 所有版本 JDK 安装指南 (with Homebrew) (包括了使用brew安装jdk,以及各个版本之间的关系,Orcale OpenJDK以及AdoptOpenJDK)
2.如何在MacOSX上安装OpenJDKJava 11,允许版本切换 (这里也有其他的安装选项可以供选择,主要是集中在讨论中,可以使用sdkman进行安装并进行版本切换)
3.HomeBrew和HomeBrew Cask的安装和使用 (这里涉及到一个概念就是使用brew和brew cask的区别,以及他们的安装方式)
4.brew和brew cask有什么区别? (更加具体的区别可以在知乎讨论上进行查看)
5.adoptopenjdk最新发布

2.2自动安装

使用brew命令,可以自动安装,自动安装的java目录在 /Library/Java/JavaVirtualMachines/ 目录下。目前我就是使用这个方式进行安装的,但是这里的jdk版本也不是最新的,2023年04月06日,只能安装到最高 adoptopenjdk/openjdk/adoptopenjdk16 版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## 增加库
brew tap AdoptOpenJDK/openjdk
## 查看可用版本
brew search openjdk
## 安装
brew cask install adoptopenjdk14
## 配置环境变量,这一步我省略了,没有让我配置环境变量
## 卸载
brew cask uninstall [XXX]

## 后来改成了
brew install --cask [XXX]

## 查看结果
/usr/libexec/java_home -V

## 卸载
brew cask uninstall [XXX]
参考文章:
1.MAC安装JDK及环境变量配置 (安装Orcale的jdk选项)
2.MacOS Homebrew 安装 OpenJDK (这篇安装和卸载AdoptOpenJDK/openjdk讲的很全面,还有卸载以及切换版本,这里还有配置环境变量的部分,但是我没有配置,依然可以使用命令行)
3.OpenJDK和AdoptOpenJDK之间的区别 (OpenJDK和AdoptOpenJDK之间的区别)
4.Jelastic Extended Support of Java Runtimes: AdoptOpenJDK, Liberica, Zulu, Corretto, OpenJ9 and GraalVM (各个版本的的OpenJDK的区别)
5.Mac配置多个Java版本 (使用工具:brew cask,可以通过手动修改环境变量的方式,切换不同的java版本)
6.brew java 切换_Mac上Homebrew安装多版本Java
7.Mac - 如何在Mac上安装多个版本openjdk并有效管理 这篇文章讲了配置jenv版本管理工具:brew install jenv。
8.【已解决】Error: brew cask is no longer a brew command. Use brew <command> --cask instead.

3.Maven安装

和linux以及windows上安装方法大同小异,都是下载,解压,然后配置环境变量,重新加载环境变量,最后就是验证了。

1
2
3
4
5
6
7
8
9
## 编辑用户配置文件
vi ~/.bash_profile

## 添加maven安装目录
export M3_HOME=/usr/local/maven3.6.3
export PATH=$M3_HOME/bin:$PATH

## 使生效
source ~/.bash_profile

如果在zsh环境下,还是无法识别,可以在zshrc配置文件中添加一下.bash_profile

1
2
3
4
5
## 编辑zshrc配置文件
vi ~/.zshrc

## 添加
source ~/.bash_profile

Mac上有3处可以设置环境变量:

  • /etc/profile :系统全局变量,系统启动即加载该文件的配置(不建议添加)
  • /etc/bashrc:所有类型的bash shell 都会读取该文件的配置
  • ~/.bash_profile:配置用户级环境变量,在系统用户文件夹下创建,当用户登录时,该文件会被执行且仅执行一次
参考文章:
1.MAC 安装 Maven (跟着这个步骤做,总会有收获的)
2.Mac zsh: command not found:mvn (这里有为什么zsh无法识别mvn命令的问题)

4.SDKMan

可以使用SDKMan进行安装和管理jdk版本,安装和配置SDKMan也是挺简单的,只需要一行命令就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 安装
curl -s "https://get.sdkman.io" | bash

## 显示
You already have SDKMAN installed.
SDKMAN was found at:

/Users/bibichuan/.sdkman

Please consider running the following if you need to upgrade.

$ sdk selfupdate force

## 执行环境变量初始化
source "$HOME/.sdkman/bin/sdkman-init.sh"

## 写入.bash_profile,这样每次打开命令行都可以引用 sdk 命令,加入下面的一句话

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/Users/你的用户名/.sdkman/bin/sdkman-init.sh" ]] && source "/
Users/你的用户名/.sdkman/bin/sdkman-init.sh"
参考文章:
1.Mac安装SDKMAN
2.macOS 下安装SDKMAN 软件开发工具包管理器 这个也是安装挺简单的,出现了Enjoy字样,表明已经安装成功了。
3.Installation

问题

(1) curl: (92) HTTP/2 stream 1 was not closed cleanly before end of the underlying stream
在安装的时候,出现了这个问题。总是安装不成功,我重新删除:rm -rf ~/.sdkman,增加了–http1.1 参数重新安装也不行,在执行download的时候,出现了:“curl: (56) Recv failure: Operation timed out” 错误。

【解决办法】
问题出现的诡异,解决也非常的诡异,其实就是同样的语句,可是执行出来的结果就是不一样。

1
2
3
4
5
6
7
## 第一次,不成功
curl -s "https://get.sdkman.io" | bash
## 第二次,不成功
curl -s "https://get.sdkman.io" --http1.1 | bash

## 后来我又尝试了,成功了
curl -s "https://get.sdkman.io" | bash
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。