mac上mvn报错No compiler is provided in this environment.Perhaps you are running on a JRE rather than...

1. maven安装

1.1 安装JDK 8

  • 最近更换了mac,新的mac操作系统为macOS Monterey,对应的具体版本为12.2.1
  • 完成JDK 8的安装:并未参考任何博客,直接下载对应安装包,进行安装
  • 自己在位配置任何Java环境变量的情况下,发现java -versionjavacjava命令都能执行,就没做后续的配置
  • 如果想要快速下载历史版本,可以参考作者之前的博客:win10安装jdk1.8(附国内下载镜像)
  • 可以参考博客:带图形界面的JDK安装:Java从零开始(2)在 MacOS 上安装 Java,完成JDK的安装
  • 其中,/usr/libexec/java_home可以用于获取Java的安装路径,起该井版本/usr/libexec/java_home -V/usr/libexec/java_home -V version,可以获取详细的JDK信息
  • 对于该命令的解读,可以参考博客:Mac下查看java的安装路径

1.2 maven的安装

  • 参考博客:2020最新版 maven for MAC 安装及配置,完成maven的安装与配置

  • 最终在终端输入mvn -version能成功显示maven的版本信息

    $ mvn -version
    Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
    Maven home: /Users/11120066/apache-maven-3.6.1
    Java version: 1.8.0_192, 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: "10.16", arch: "x86_64", family: "mac"
    

2. mvn命令执行报错

2.1 错误信息

  • 通过执行mvn clean install -DskipTests编译、安装项目时,在compile阶段报错

  • 报错的关键信息如下:

    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    

2.2 问题的解决

  • 查阅了很多博客,后来也补上了JAVA_HOME,但是仍然没有解决问题
  • 后来怀疑是/usr/libexec/java_home获取到的Java安装路径(/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home )有问题,因为教程里面获取到的安装路径跟自己不一样
  • 考虑到macOS版本不同,所以认为安装路径是OK的,只是因为路径有空格导致无法正确识别
  • 因此,自己还使用\转义空格后,但仍然没有解决问题
  • 最后参考博客:mac Big Sur系统 mvn打包报错:No compiler is provided in this environment. Perhaps you are running on a JRE,成功解决问题

自己的做法

  • 首先,确认存在另一个安装路径/Library/Java/JavaVirtualMachines/...

    $ /usr/libexec/java_home -V
    Matching Java Virtual Machines (2):
        1.8.192.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
        1.8.0_192 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
    
  • 然后,删除带空格的安装路径

  • 最后,再次执行mvn -version时,显示的runtime就变化了
    在这里插入图片描述

一些说明:

  • 自己并未在~/.bash_profile中设置JAVA_HOME,系统也能成功获取到Java的环境变量。猜测:这是图形界面安装JDK,自带的隐形福利
  • 根据自己的多年经验,在做删除前,请先确认是否有备份或者后退之路,不然不要轻易执行删除

你可能感兴趣的:(《maven实战》,mac,maven,mac)