Mac M1安装JDK的实战避坑指南

 更新时间:2023年02月09日 09:57:22   作者:扫地僧'  
这篇文章主要给大家介绍了关于Mac M1安装JDK避坑的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前言

在经历了各种花里胡哨的操作后,发现M1安装JDK简直不要太无脑!!!虽然网上的教程已经很多了,但是很多还是不够详细,或者容易踩坑。于是我这里总结了一个全面的教程,给出两个方案如下⬇️

一、Zulu JDK

1.一键安装方案

在Orcle没有适配M1芯片之前,zulu jdk无疑是最优的选择,因为它提供了支持M1芯片Arm 64架构的 OpenJDK 。注意我说的是 “之前” ,那么隐含意思就是现在Java官方也提供了M1适配版本,这让作为 M 系列用户之一的我,听到后幸福感翻倍。

我们先来看看 Azul Zulu of OpenJDK。

官网下载地址:https://www.azul.com/downloads/?version=java-8-lts&os=macos&architecture=arm-64-bit&package=jdk

进入后按照下图进行选择适合自己的版本(这里链接点进去是经典的JDK 1.8,您也可以自行更换想要的版本) ⬇️

这里我的建议是直接下载 .dmg 格式,这样你就可以体验一件安装模式了,会自动帮您配置好系统环境环境变量,安装即完成。(幸福~)

安装完成直接在终端轻描淡写的输入:java --version + 回车

是的,没错,它已经可以用了😭。

默认安装路径如下,有需要自行查看 ⬇️

/Library/Java/JavaVirtualMachines

顺便提一嘴,拿到 Mac M1的那一刻应该是已经贴心的装好了一个 zulu-8.jdk 可以直接使用的,所以需要更换蹦高版本再进行如上操作吧。

2.手动安装方案

如果动手能力强的你不想任其安排,想要自己体验安装过程,或者想将JDK安装在自己喜欢的地方那么就下载压缩包版本。(下载到指定位置并解压不用我说了吧~)手动方案我们有两种方案可供选择。

1)配置.bash_profile文件

此种方法在MacOS系统下算是一个通用方法,但是由于 M1 开始便默认使用了 zsh ,所以我们的配置方式也就一分为二了,现在先给出传统方式。我个人比较推荐配置 .bash_profile 文件,因为后续开发中需要的各种环境我都可以井井有条地进行整理。废话不说,直接开始吧 ⬇️

第一步:打开终端输入以下命令编辑配置文件

vim ~/.bash_profile

如果提示如下错误信息:

.bash_profile does not exist.

说明您是第一次配置环境变量,需要先创建~/.bash_profile文件,输入以下命令再次进行上面的操作即可:

touch .bash_profile

进入如下提示页面我们直接键入英文字母E进入编辑。

刚进入 .bash_profile 文件我们是无法进行编辑的,需要在英文输入法模式下键入i 即可开始编辑,此时底部也会提示 “INSERT” 进入编辑模式。

第二步:配置环境变量

准备好两个您自行下载的并且解压后的JDK安装路径,将下面路径更换成自己的就行(不可无脑复制),然后复制张贴到配置文件中。

# 配置JDK环境 
# JAVA_HOME:JDK路径     $JAVA_HOME/bin下面是JDK的各种命令  
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH:.

这里有小伙伴就要纠结了,要不要配置CLASSPATH?

之所以你看到很多教程里面要配置CLASSPATH,是因为当我们配置CLASSPATH后,系统会根据我们所配置的CLASSPATH加载类。主要涉及到两个jar包:

  • dt.jar:是关于运行环境的类库,主要是用于swing的包,如果不使用可以不配置。
  • tools.jar:是工具类库,它在编译和运行一个类时被使用。

如我们使用javac命令编译程序时,系统加载tools.jar其实就封装了下面这样一条命令:

javac XXX.java
java -CLASSPATH=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

但是在JDK1.5以后,CLASSPATH并不是必须配置了,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置CLASSPATH,但JDK1.5之后,JRE能自动搜索目录下类文件,并且加载dt.jar和tool.jar的类。(结论就是可不配

完成以上操作后直接依次键入:ESC + :wq 即可。

第三步:使配置文件立即生效

输入以下命令使刚才的配置文件生效

source ~/.bash_profile

OK,大功告成!接下来键入 java --version 即可查看安装的JDK了。

但是此种方式,如果你是M1用户你每次重启终端都需要手动输入 source ~/.bash_profile 使配置文件生效,否则可能找不到命令。解决方案就是在 .zshrc 文件中加入 source ~/.bash_profile ,这样每次打开终端便会自动执行该命令。

大致步骤同上面的操作下面给简单步骤:

  • 编辑文件:vim ~/.zshrc
  • 在.zshrc中加入 source ~/.bash_profile 然后保存并退出
  • source ~/.zshrc使配置文件生效

2)配置.zshrc文件

相比于上面的方式,此种方法来得更直接,对M1用户更友好。步骤大致同上,下面给出简单说明⬇️

第一步:打开终端输入以下命令编辑配置文件

vim ~/.zshrc

第二步:配置环境变量

# 配置JDK环境 
# JAVA_HOME:JDK路径     $JAVA_HOME/bin下面是JDK的各种命令  
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH:.

完事儿后,依次键入:ESC + :wq 保存并退出即可。

第三步:使配置文件生效

source ~/.zshrc

完事儿,简单粗暴。

二、Oracle JDK

可喜可贺的是Oracle JDK17 已经可以适配 Macbook M1 芯片了!!!!🎉🎉🎉

下载地址:https://www.oracle.com/cn/java/technologies/downloads/#java17

遗憾的是Orcle只对 JDK17、JDK19进行了适配,而抛弃了千年老八 JDK8 ,然而现在用的最多的就是JDK8与JDK11了,这里属实没想明白Orcle在想些啥。

安装流程:

同上面的 Zulu JDK 直接下载 .dmg 版本无脑安装即可。当然还是那句话,动手能力强的你也可以下载免安装版本进行手动配置环境变量。

总结

到此这篇关于Mac M1安装JDK的文章就介绍到这了,更多相关Mac M1安装JDK内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入解读MVC模式和三层架构

    深入解读MVC模式和三层架构

    这篇文章主要介绍了深入解读MVC模式和三层架构,三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)的三层架构,各层之间采用接口相互访问,需要的朋友可以参考下
    2023-04-04
  • Spring中bean的生命周期之getSingleton方法

    Spring中bean的生命周期之getSingleton方法

    今天给大家带来的是关于Spring的相关知识,文章围绕着Spring中bean的生命周期之getSingleton方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 详谈StringUtils3之StringUtils.isEmpty()和StringUtils.isB的区别

    详谈StringUtils3之StringUtils.isEmpty()和StringUtils.isB的区别

    这篇文章主要介绍了详谈StringUtils3之StringUtils.isEmpty()和StringUtils.isB的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java实现简单LRU缓存机制的方法

    Java实现简单LRU缓存机制的方法

    这篇文章主要介绍了Java实现简单LRU缓存机制的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Spring Boot深入排查 java.lang.ArrayStoreException异常

    Spring Boot深入排查 java.lang.ArrayStoreException异常

    这篇文章介绍了Spring Boot深入排查 java.lang.ArrayStoreException异常,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Java中的interrupt、interrupted和isInterrupted方法区别详解

    Java中的interrupt、interrupted和isInterrupted方法区别详解

    这篇文章主要介绍了Java中的interrupt、interrupted和isInterrupted方法区别详解,interrupt用于中断线程,调用该方法的线程的状态将会被设置为中断状态,线程中断仅仅是设置线程的中断状态位,并不会停止线程,需要用户自己去监视线程的状态并作出处理,需要的朋友可以参考下
    2023-12-12
  • 关于mybatis callSettersOnNulls 配置解析

    关于mybatis callSettersOnNulls 配置解析

    这篇文章主要介绍了关于mybatis callSettersOnNulls 配置,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-06-06
  • java基于netty NIO的简单聊天室的实现

    java基于netty NIO的简单聊天室的实现

    这篇文章主要介绍了java基于netty NIO的简单聊天室的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 解决IDEA克隆代码后在右下角没有git分支的问题

    解决IDEA克隆代码后在右下角没有git分支的问题

    这篇文章主要介绍了解决IDEA克隆代码后在右下角没有git分支的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • JAVA中excel导出一对多合并具体实现

    JAVA中excel导出一对多合并具体实现

    项目中经常会使用到导出功能,有导出Word,有导出Excel的,下面这篇文章主要给大家介绍了关于JAVA中excel导出一对多合并具体实现的相关资料,需要的朋友可以参考下
    2023-09-09

最新评论