Mac环境运行mvn报错

来源:互联网 发布:网络电信诈骗 编辑:程序博客网 时间:2024/05/19 22:50

Mac环境运行mvn报错:


执行mvn时,发现找不到JAVA_HOME环境变量,但是我已经配置了JAVA_HOME.

报错信息:

➜  ~ mvn -v/etc/mavenrc: line 1: -v: command not foundError: JAVA_HOME is not defined correctly.  We cannot execute /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java

输出环境变量:

➜  ~ echo $JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

查看本机环境变量的配置:

➜  ~ cat ~/.bash_profilealias ll='ls -al'### Your previous /Users/gy/.bash_profile file was backed up as /Users/gy/.bash_profile.macports-saved_2014-06-17_at_17:12:07##JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/HomeCATALINA_HOME=/Users/gy/Applications/apache-tomcat-7.0.73REDIS_HOME=/Users/gy/Applications/redis-2.8.19SCALA_HOME=/Library/scala.2.11.7MAVEN_HOME=/usr/local/Cellar/maven/3.2.3ZOOKEEPER_HOME=/Users/gy/Applications/zookeeper-3.4.6SPARK_HOME=/Users/gy/Library/spark-2.1.1-bin-hadoop2.7SBT_HOME=/usr/local/Cellar/sbt/0.13.15PATH=/opt/local/bin:/opt/local/sbin:$JAVA_HOME/bin:$SCALA_HOME/bin:$ZOOKEEPER_HOME/bin:$SPARK_HOME/bin:$SBT_HOME/bin:$CATALINA_HOME/bin:$REDIS_HOME/bin:$PATHexport PATH;

根据报错信息查看/etc/mavenrc文件内容:

➜  ~ cat /etc/mavenrc JAVA_HOME=/usr/libexec/java_home -v 1.8

再查看/usr/libexec/java_home:

➜  ~ ll /usr/libexec/java_homelrwxr-xr-x  1 root  wheel  79 Apr 22 08:20 /usr/libexec/java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home// 这是一个Linux软连接文件,文件已经不存在

到这,就知道怎么改了,可以重新创建一个软连接,指向新的JAVA_HOME目录:
切换到Root用户,修改连接的指向:

➜  ~ sudo suPassword:sh-3.2# 

但在修改软连接的时候,遇到了权限问题:
Mac OS X 11中的/usr/bin 的“Operation not permitted”

根据博文:
1. Mac 中的“Operation not permitted”
2. Unix/Linux 系统中的 Operation Not Permitted 问题
得知,Apple 在 OS X 10.11 以后的版本中默认启动了一项系统保护程序,叫做 System Integrity Protection,也被唤作 rootless(寓意让 root 弱一点),该程序意在保护电脑不被恶意程序攻击。即使 root 用户也无法修改文件。

SIP 会锁定几个系统文件目录:

/System/sbin/usr (/usr/local 除外)
要修改文件必须暂时关闭SIP,步骤如下:
  • 重启Mac,在启动过程中按住 Command + R,进入恢复模式
  • 在恢复模式中,选择 【菜单】->【Terminal】
  • 在Termainl中,输入: csrutil disable
  • 重启电脑(正常开机),修改/etc/mavenrc文件
  • 重启电脑,进入恢复模式,在Terminal中,输入:csrutil enable
  • 重启电脑(正常开机)即可。

根据另一篇博文:怎样修改Maven使用默认的Java环境,maven依赖的JAVA_HOME在2个地方配置:
  • /etc/mavenrc
  • ~/.mavenrc
    如果还是不行,再修改~/.mavenrc文件的内容即可。
原创粉丝点击