mac maven编译出现问题

ops/2024/11/27 12:41:50/

背景
进行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/ops/137085.html

相关文章

【leetcode】动态规划

31. 873. 最长的斐波那契子序列的长度 题目&#xff1a; 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#xff0c;都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr &#xff0…

Linux下通过DRM操作屏幕,发生行对齐 (stride)问题

前言 Linux下使用LVGL操作屏幕&#xff0c;屏幕尺寸是[280*1424]&#xff0c;不管如何设置LVGL的参数&#xff0c;屏幕的显示均为花屏&#xff0c;能看到有图像显示&#xff0c;但是图像是行错乱的。 ubuntu桌面系统显示正常 打印DRM看输出 drm: 280x1424 (0mm X 0mm) pixel …

OpenTK 实现三维空间模型仿真详解

文章目录 一、创建渲染窗口与初始化 OpenGL二、三维模型加载三、渲染管线搭建四、模型渲染与变换五、交互与事件处理一、创建渲染窗口与初始化 OpenGL 继承 GameWindow:   构建自定义类使其继承自 GameWindow,该类内部封装了诸多窗口管理以及渲染循环逻辑,为后续渲染工作…

Android触摸事件setOnTouchListener用法

1&#xff0c;首先需知道MotionEvent类一些参数特性 ACTION_DOWN: 表示用户开始触摸(在第一个点被按下时触发) ACTION_MOVE: 当有点在屏幕上移动时触发&#xff0c;注意的是&#xff0c;由于灵敏度很高&#xff0c;所以基本上只要有点在屏幕上&#xff0c;此事件就会不停地被触…

Ubuntu问题 -- Linux立即关机, 立即重启命令

立即关机 sudo shutdown -h now立即重启 sudo reboot

跨域相关的一些问题 ✅

当网页从一个源&#xff08;https://baidu.com&#xff09;请求另一个源&#xff08;如 https://taobao/api&#xff09;的资源时&#xff0c;就发生了跨域。由于安全原因&#xff08;防止恶意网站通过脚本访问用户在其他网站上的数据&#xff09;&#xff0c;浏览器对跨域请求…

Stable Diffusion中的自注意力替换技术与Diffusers实现

Stable Diffusion中的自注意力替换技术与Diffusers实现 文章目录 Stable Diffusion中的自注意力替换技术与Diffusers实现摘要Abstract一、机器学习部分1. 注意力计算2. SD中的自注意力替换3. 自注意力替换的应用4. 在 Diffusers 里实现自注意力替换4.1 AttentionProcessor4.2 实…

Git 提交的相对引用

Git 提交的相对引用 在 Git 中&#xff0c;使用 ~ 和 ^ 符号可以帮助你更灵活地引用提交历史中的特定提交。以下是这些符号的具体用法和示例&#xff1a; 1. ~&#xff08;波浪号&#xff09; ~ 符号用于指向上一个或多个父提交。它总是沿着第一个父提交的链向上追溯。 HEA…