mac安装jdk和maven
官网下载地址https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html先解压 jdk-11.0.16.1_macos-x64_bin.tar.gzcdls -avim ~/.bash_profile如果是.gz用这种方式JAVA_HOME/Users/xxx/Downloads/jdk/jdk-11.0.16.1.jdk/Contents/Home CLASSPAHT$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. PATH$JAVA_HOME/bin:$PATH:. export JAVA_HOME export CLASSPATH export PATH如果是.dmg用这种方式查看所有已安装 JDK含版本和路径/usr/libexec/java_home -V# JDK 多版本配置 Mac get_java_home() { local ver$1 if /usr/libexec/java_home -V 21 | grep -qE \b${ver//./\\.}\b; then /usr/libexec/java_home -v $ver else echo fi } export JAVA_8_HOME$(get_java_home 1.8) export JAVA_11_HOME$(get_java_home 11) export JAVA_21_HOME$(get_java_home 21) # 底层静默切换不输出日志 _set_java_silent() { local target_home$1 if [[ -z $target_home || ! -d ${target_home}/bin ]]; then return 1 fi PATH$(echo $PATH | tr : \n | grep -v JavaVirtualMachines | sed /^$/d | tr \n :) PATH${PATH%:} export JAVA_HOME$target_home export PATH${JAVA_HOME}/bin:$PATH } # 手动切换用带打印提示 set_java_path() { local target_home$1 if _set_java_silent $target_home; then echo ✅ 当前Java$(java -version 21 | head -1) else echo ❌ 无效JAVA_HOME: $target_home return 1 fi } # 重点初始化默认JDK调用静默函数不打印 if [[ -n $JAVA_11_HOME -d ${JAVA_11_HOME}/bin ]]; then _set_java_silent $JAVA_11_HOME fi # 切换别名手动敲 jdk8/jdk11/jdk21 才会输出✅ alias jdk8if [[ -n $JAVA_8_HOME -d ${JAVA_8_HOME}/bin ]]; then set_java_path $JAVA_8_HOME; else echo ❌ JDK8未找到; fi alias jdk11if [[ -n $JAVA_11_HOME -d ${JAVA_11_HOME}/bin ]]; then set_java_path $JAVA_11_HOME; else echo ❌ JDK11未找到; fi alias jdk21if [[ -n $JAVA_21_HOME -d ${JAVA_21_HOME}/bin ]]; then set_java_path $JAVA_21_HOME; else echo ❌ JDK21未找到; fi alias jdk-statusecho JAVA_8_HOME|$JAVA_8_HOME|;echo JAVA_11_HOME|$JAVA_11_HOME|;echo JAVA_21_HOME|$JAVA_21_HOME|;java -version # Maven export MAVEN_HOME/Users/wangfengchen/Downloads/maven/apache-maven-3.9.16 export PATH$PATH:$MAVEN_HOME/bin export PATH/Users/wangfengchen/.git-ai/bin:$PATHsource ~/.bash_profilejavacjava我们定义了2个别名jdk8和jdk11。默认配置的是jdk8如果要切换jdk11则在终端中执行命令jdk11。如果要切换回jdk8则执行命令jdk8。如果想确定当前配置的是哪个版本可以执行命令java -version进行查看。maven下载地址https://maven.apache.org/download.cgi解压maven将配置放在上面.bash_profile中export MAVEN_HOME/Users/xxx/Downloads/maven/apache-maven-3.8.6 export PATH$PATH:$MAVEN_HOME/bin特别注意新打开终端再敲mvn -v发现又报zsh: command not found: mvn。重新敲source ~/.bash_profile后恢复正常。这就让我很奇怪为什么新打开一个终端后就必须要重新source呢原因翻阅资料后发现zsh的配置文件没有加载~/.bash_profile的配置项解决执行如下命令vim ~/.zshrc在文件末尾追加如下内容(如没有该文件则直接创建并追加如下内容保存即可)source ~/.bash_profile如果你的maven环境变量配置在/etc/profile中则添加这句source /etc/profile然后执行命令使配置立即生效source ~/.zshrc之后再打开新终端窗口直接mvn -v就可以了总结由于mac系统的升级新的环境变量读取方式走zsh的就会存在以上问题。

相关新闻

应用笔记 | TSMaster如何代码自动发送LIN报文

应用笔记 | TSMaster如何代码自动发送LIN报文

“本文目录:一、硬件准备1. 通道选择2. 配置环境二、仿真1. 点击添加C脚本编辑器1-1. 新建快捷键事件1-2. 代码编写1-3. 选择报文编写方式三、查看报文信息1. 查看报文界面2. 下载调度表3. 设置自启动4. 运行工程一、硬件准备使用TSMaster软件中自带的虚拟LIN设备为…

2026/9/30 3:57:29 阅读更多 →
STM32F103C8T6与TB6612电机驱动实战:PWM调速与调试指南

STM32F103C8T6与TB6612电机驱动实战:PWM调速与调试指南

1. 从一堆吃灰的电机说起:为什么选TB6612而不是L298N手头攒了好几个拆机的小型直流电机,有从旧打印机里拆的,有从玩具车上扒的,还有几个带编码器的减速电机。之前一直用L298N驱动,模块便宜、接线简单,但用久…

2026/9/30 3:42:15 阅读更多 →
MTK平台LK启动流程详解:从硬件初始化到内核加载的实战指南

MTK平台LK启动流程详解:从硬件初始化到内核加载的实战指南

1. 为什么LK值得单独拿出来讲搞嵌入式或者做Android底层开发的朋友,对LK这个词应该不陌生。LK是Little Kernel的缩写,在MTK平台的启动链路里,它扮演的是Bootloader第二阶段的角色。简单说,芯片上电之后先跑芯片内部固化的BootROM&…

2026/9/29 2:11:08 阅读更多 →

最新新闻

147、Semantic Kernel入门:微软Agent框架

147、Semantic Kernel入门:微软Agent框架

147、Semantic Kernel入门:微软Agent框架 昨天凌晨两点,我盯着屏幕上那个诡异的异常,FunctionInvocationException: A plugin function was not found,明明前一天还在正常跑,今天只是把插件目录从skills改成了plugins,就全线崩溃。后来发现是Semantic Kernel升级到1.x之…

2026/9/30 9:48:46 阅读更多 →
Unity UI与Sprite遮挡关系详解:从Sorting Layer到Canvas层级控制

Unity UI与Sprite遮挡关系详解:从Sorting Layer到Canvas层级控制

1. 为什么UI和Sprite的遮挡关系会乱 做Unity开发的朋友,几乎都会碰到一个让人抓狂的问题:明明某个界面或者图片应该显示在最上面,运行起来却被其他东西盖住了,或者反过来——一个应该藏在后面的Sprite跑到了UI上面,把整…

2026/9/30 9:48:46 阅读更多 →
基于LSTM的短期电力负荷预测:论文复现与调参避坑指南

基于LSTM的短期电力负荷预测:论文复现与调参避坑指南

简介:这份PDF文献面向电力系统调度、电力市场交易及新能源并网领域的研究人员与工程技术人员,聚焦短期电力负荷预测这一关键课题。针对传统统计学方法对负荷序列平稳性要求高、难以兼顾负荷自身时序依赖与多因素非线性影响的问题,文献提出基于…

2026/9/30 9:48:46 阅读更多 →
2026年中国食品级壳寡糖行业发展现状与市场占有率及排名研究分析报告

2026年中国食品级壳寡糖行业发展现状与市场占有率及排名研究分析报告

食品级壳寡糖选购避坑指南:你可能正在踩的4大核心痛点对于食品生产企业、研发机构而言,食品级壳寡糖作为天然健康原料,在肠道养护、食品保鲜、营养强化等场景中的应用越来越广泛,但市面上的产品质量参差不齐,很多企业在…

2026/9/30 9:48:46 阅读更多 →
Qt TCP通信核心原理与工业级实践指南

Qt TCP通信核心原理与工业级实践指南

1. 为什么Qt的TCP通信不是“写个socket就完事”——从一个被忽略的底层事实讲起 很多人第一次在Qt里尝试TCP通信,心里想的是:“不就是调用QTcpServer监听、QTcpSocket连接、write()发数据、readyRead()收数据?照着文档抄几行代码,…

2026/9/30 9:48:46 阅读更多 →
开源版Jev登顶热榜:本地部署Agent工具调用全解析

开源版Jev登顶热榜:本地部署Agent工具调用全解析

Hugging Face 热榜第一,这个位置从来都不是白给的。最近有个叫「开源版 Jev」的项目,不声不响冲到了这个位置,热度甚至超过了不少刚发布的官方模型。注意,它不是一个一模一样的 Jev,而是一个社区开发者主导的开源复刻实…

2026/9/30 9:47:46 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →