mac maven编译出现问题

news/2024/12/5 18:16:57/

背景
进行maven install 命令,报错:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.310 s
[INFO] Finished at: 2024-11-26T11:22:34+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project channelapi-service: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] 
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException


分析
java安装正常

>java -versionjava 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)>/usr/libexec/java_home -VMatching Java Virtual Machines (3):1.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/Home1.8.0_202 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

mvn -v 查看 runtime 环境

mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/manka/software/apache-maven-3.6.3
Java version: 1.8.0_381, vendor: Oracle Corporation, runtime: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "14.6.1", arch: "aarch64", family: "mac"

解决

删除掉 JavaAppletPlugin.plugin 这个插件即可。

进入 /Library/Internet Plug-Ins/ 目录,删除 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin

> rm -rf JavaAppletPlugin.plugin

重新执行 mvn -v runtime 正确

 mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/manka/software/apache-maven-3.6.3
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.6.1", arch: "aarch64", family: "mac"

补充知识
MAC OS X环境的所有配置以及加载顺序如下:

# 系统级别
/etc/profile
/etc/paths # 用户级别
~/.bash_profile 
~/.bash_login 
~/.profile ~/.bashrc(或者~/.zshrc)

前两个环境配置在系统启动时候就会加载,针对所有用户生效,后面四个属于具体用户级别的配置。

Maven会按照以下顺序来确定使用哪个JDK:

  1. Maven配置:Maven允许你通过maven-compiler-plugin插件指定使用的JDK版本。如果你在项目的pom.xml文件中配置了这个插件,并指定了JDK版本,Maven会尝试使用这个版本。

  2. 环境变量:如果Maven配置中没有指定JDK版本,它会查找环境变量JAVA_HOME。如果JAVA_HOME被设置,Maven会使用这个环境变量指向的JDK版本。

  3. 系统路径:如果JAVA_HOME没有被设置,Maven会退回到系统路径(PATH环境变量)来查找javajavac命令。系统路径中列出的第一个java命令将被使用。

  4. JDK安装:如果系统上安装了多个版本的JDK,并且PATH环境变量中包含了多个JDK的bin目录,那么系统会根据PATH中目录的顺序来决定使用哪个版本的java命令。

  5. 系统默认JDK:如果以上都没有指定,Maven将使用系统默认的JDK版本,这通常是操作系统安装时附带的JDK版本。


http://www.ppmy.cn/news/1551326.html

相关文章

C#中面试的常见问题008

1.内存泄露 内存泄露的原因: 未释放动态分配的内存:在使用malloc、new等动态内存分配函数后,未能正确释放内存。引用计数错误:在引用计数管理内存的语言中,增加引用计数但未相应减少,导致内存无法释放。循…

格网法计算平面点云面积(matlab版本)

1、原理介绍 格网法计算平面点云面积,其思想类似高中油膜法计算面积。其将点云投影到水平面,再将点云划分成尺寸相同的格网。最后,统计格网内包含点的数量number,那么可利用如下公式计算得到点云的面积: Aeranumber*L…

SpringBoot 项目中使用 spring-boot-starter-amqp 依赖实现 RabbitMQ

文章目录 前言1、application.yml2、RabbitMqConfig3、MqMessage4、MqMessageItem5、DirectMode6、StateConsumer:消费者7、InfoConsumer:消费者 前言 本文是工作之余的随手记,记录在工作期间使用 RabbitMQ 的笔记。 1、application.yml 使…

容器第二天(day039)

1.jq处理json格式数据 使用场景:docker inspect出来的结果是json格式数据 安装:yum install -y jq 用法:docker inspect nginx:alpine |jq .[].GraphDriver.Data.WorkDir 遇到[],则.[]。 2.容器管理 运行起来的镜像可以成为容…

【linux】重定向

linux重定向 从定义上来看,Linux重定向就是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。在进一步探索重定向之前&…

Flutter 1.1:下载Flutter环境

1、在AS中下载Flutter插件 在setting的Plugins中下载Flutter,如图所示,可以直接进行搜索查找 2、下载flutter的sdk源代码 flutter中文文档学习 通过Git下载SDK源代码 git clone -b stable https://github.com/flutter/flutter.git3、配置系统变量 3…

遗传算法与深度学习实战(25)——使用Keras构建卷积神经网络

遗传算法与深度学习实战(25)——使用Keras构建卷积神经网络 0. 前言1. 卷积神经网络基本概念1.1 卷积1.2 步幅1.3 填充1.4 激活函数1.5 池化 2. 使用 Keras 构建卷积神经网络3. CNN 层的问题4. 模型泛化小结系列链接 0. 前言 卷积神经网络 (Convolution…

springboot343大学生选修选课系统的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 大学生选修选课系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此&#xff0c…