apple macbook M系列芯片安装 openJDK17
文章目录
- 1. 查找openjdk版本
- 2. 安装openjdk
- 3. 多jdk之间的切换
在这里我们使用
brew命令查找并安装。
1. 查找openjdk版本
执行:brew search openjdk,注意:执行命令后,如果得到的结果中没有红框内容,则需要更新一下 brew

更新 brew 分别执行以下命令:
cd "$(brew --repo)"
git fetch
git reset --hard origin/master
brew update: 执行时间较长,耐心等待
brew upgrade
等待更新结束,再次执行查找openjdk命令,此时应该显示图中内容。
2. 安装openjdk
执行安装命令:brew install openjdk@版本号
比如我这里想安装openJdk17,则执行:brew install openjdk@17
安装完毕后,输出如下信息表示安装成功:
For the system Java wrappers to find this JDK, symlink it withsudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdkopenjdk@17 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.If you need to have openjdk@17 first in your PATH, run:echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrcFor compilers to find openjdk@17 you may need to set:export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"
接下来,根据提示,我们这里需要做两个操作
-
为了让 Java wrappers 找到 JDK,需要手动建立链接;
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk -
配置环境变量;
因为之前安装有jdk1.8,所以需要在两个jdk之前切换,需要配置多环境变量:
首先:找到~/.bash_profile、~/.bashrc、~/.zshrc等配置文件中的 任意一个 (之前环境变量配置在哪个文件,就继续使用原有文件,我这里使用~/.bash_profile) ,添加下面这行代码:# 配置Java11的家目录 export JAVA_17_HOME=$(/usr/libexec/java_home -v17) # 配置Java8的家目录 export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) # 配置别名,方便快速切换 alias java8='export JAVA_HOME=$JAVA_8_HOME' # 配置别名,方便快速切换 alias java17='export JAVA_HOME=$JAVA_17_HOME'export PATH=$JAVA_HOME/bin:$PATH:. # 默认是java8 export JAVA_HOME=$JAVA_8_HOME
3. 多jdk之间的切换
经过我反复测试,切换时一定要加上:&& source ~/.bash_profile。
即:
- 切换Java17:
java17 && source ~/.bash_profile - 切换Java8:
java8 && source ~/.bash_profile
相关文章:
apple macbook M系列芯片安装 openJDK17
文章目录 1. 查找openjdk版本2. 安装openjdk3. 多jdk之间的切换 在这里我们使用 brew 命令查找并安装。 1. 查找openjdk版本 执行:brew search openjdk,注意:执行命令后,如果得到的结果中没有红框内容,则需要更新一下…...
C语言——打印出所有的“水仙花数”
所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153是一个水仙花数,因为1^3 5^3 3^3 153。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>…...
<HarmonyOS第一课>应用程序框架 【课后考核】
【习题】应用程序框架 判断题 一个应用只能有一个UIAbility。错误(False)创建的Empty Ability模板工程,初始会生成一个UIAbility文件。正确(True)每调用一次router.pushUrl()方法,页面路由栈数量均会加1。错误(False) 单选题 API9及以上,r…...
自动驾驶学习笔记(十一)——高精地图
#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 高精地图 地图采集 底图制作 地图…...
HCIA-H12-811题目解析(2)
1、【单选题】 在以太网这种多点访问网络上PPPOE服务器可以通过一个以太网端口与很多PPPOE客户端建立起PPP连接,因此服务器必须为每个PPP会话建立唯一的会话标识符以区分不同的连接PPPOE会使用什么参数建立会话标识符? 2、【单选题】PPP协议定义的是OSI参考模型中…...
Docker-简介、基本操作
目录 Docker理解 1、Docker本质 2、Docker与虚拟机的区别 3、Docker和JVM虚拟化的区别 4、容器、镜像的理解 5、Docker架构 Docker客户端 Docker服务器 Docker镜像 Docker容器 镜像仓库 Docker基本操作 1、Docker镜像仓库 镜像仓库分类 镜像仓库命令 docker lo…...
Codeforces Round 911 (Div. 2)(C dp D gcd 分解+容斥 E tarjan+dp)
A.手玩题: 可以通过最后一个样例,如果是长度为3的连续O,直接在两边放就行,然后一直用中间的水填到其他地方 #include<bits/stdc.h> using namespace std; const int N 3e510,mod 998244353; #define int long long int n…...
给csgo游戏搬砖新手的十大建议
1、不要参与赌博性质的开箱和炼金,因为真的会上瘾,赚了还好,亏了你得哭。 2、实在想要玩饰品,直接去悠悠有品或者网易buff看价格,底价再砍10元,总会有人愿意卖的。 3、在steam上不要接受陌生人的好友申请…...
西南科技大学模拟电子技术实验一(常用电子仪器的使用及电子元器件的识别)预习报告
一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元 1、用万用表电阻挡测量实验板(箱)上电位器(可调电阻)的参数范围。 0~1kΩ电阻: 1k*0%=0 1k*100%=1k 所以范围为0~1k 0~10kΩ电阻: 10k*0%=0 10k*…...
回归分析例题(多元统计分析期末复习)
例一 例二 一元线性回归 解: (1)y a ^ \hat{a} a^ b ^ \hat{b} b^x,求线性回归方程即求出 a ^ \hat{a} a^和 b ^ \hat{b} b^ 而 b ^ \hat{b} b^ L x y L x x { {L_{xy}} \over {L_{xx}} } LxxLxy 所以我们首先需要计算 L x…...
Linux多路转接select,poll
文章目录 目录 文章目录 一、五种IO模型 1.阻塞IO: 2.非阻塞IO 3.信号驱动IO 4.IO多路转接 5.异步IO 二、高级IO的一些重要概念 1.同步通信和异步通信 2.阻塞和非阻塞 三、其他高级IO 四、非阻塞IO 1.fctl函数 2.实现setNoBlock函数,将文件描述符设置…...
如何轻松将 4K 转换为 1080p 高清视频
由于某些原因,你可能有一些 4K 视频,与1080p、1080i、720p、720i等高清视频相比,4K 视频具有更高的分辨率,可以给您带来更多的视觉和听觉享受。但是,播放4k 视频是不太容易的,因为超高清电视没有高清电视那…...
责任链模式 (Chain of Responsibility Pattern)
定义 责任链模式是一种行为型设计模式,用于在对象间建立一条处理请求的链。它允许多个对象有机会处理请求,从而减少请求的发送者和接收者之间的耦合。在责任链模式中,每个接收者包含对另一个接收者的引用,形成一条链。如果一个对…...
企业营销管理能够实现自动化吗?怎么做?
当今企业面临着越来越多的营销难题:如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做?或许CRM系统营销自动化会起到作用。 客户细分: 企业可以通过CRM的客户细分功能,根据客户…...
【数据结构】什么是栈?
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌栈的定义 📌元素进栈出栈的顺序 📌栈的抽象数据类型 📌栈的顺序存储结构 📌栈的链式存储结构 链栈的进…...
基于C#实现鸡尾酒排序(双向冒泡排序)
通俗易懂点的话,就叫“双向冒泡排序”。 冒泡是一个单向的从小到大或者从大到小的交换排序,而鸡尾酒排序是双向的,从一端进行从小到大排序,从另一端进行从大到小排序。 从图中可以看到,第一次正向比较,我们…...
CentOS添加开机启动
1.编写项目启动脚本(run.sh) #!/bin/bash-切换到程序所在路径 cd /home/cavs_install/app/cavs-admin/target/ # 等待其他组件启动完毕后再启动本项目(如果不需要等待,本步骤可省略) sleep 300 # 实际启动命令 nohup …...
SpringCloudAlibaba之Nacos的持久化和高可用——详细讲解
目录 一、Nacos持久化 1.持久化说明 2.安装mysql数据库5.6.5以上版本(略) 3.修改配置文件 二、nacos高可用 1.集群说明 2.nacos集群架构图 2.集群搭建注意事项 3.集群规划 4.搭建nacos集群 5.安装Nginx 6.配置nginx conf配置文件 7.启动nginx进行测试即可 一、Nacos持久…...
vue3安装eslint和prettier,最简单的步骤
第1步: 安装eslint yarn add eslint -D 第2步: 在根文件夹中,创建.eslintrc.js文件 第3步: 在package.json文件中新增命令 "lint": "eslint --fix --ext .ts,.tsx,.vue src --quiet","prettier"…...
Day32| Leetcode 122. 买卖股票的最佳时机 II Leetcode 55. 跳跃游戏 Leetcode 45. 跳跃游戏 II
Leetcode 122. 买卖股票的最佳时机 II 题目链接 122 买卖股票的最佳时机 II 本题目设计的还是比较巧妙的,把最终的利润分为每天的利润就解决了(贪心),每天的利润就是前一天买进,后一天卖出,转化到代码上就…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
