maven 修改java home_记一次在mac上配置Maven 的JAVA_HOME的惨痛经历

本文记录了一次在Mac上配置Maven3.3.3时遇到的JAVA_HOME问题。错误信息为UnsupportedClassVersionError,原因是运行的JDK版本低于编译时的版本。尽管已安装JDK1.8,但Maven仍然使用了旧版本。通过检查.bash_profile文件、mvn脚本及shell环境变量设置,发现未exportJAVA_HOME导致问题。最终通过在.bash_profile中正确exportJAVA_HOME解决了问题。
摘要由CSDN通过智能技术生成

今天装好了了Maven3.3.3后,死活运行不了

CvdeMacBook-Pro:~chenwei$ mvn

Exceptionin thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0

这个错误明显是运行的jdk版本低于编译的jdk版本,但是本地的jdk已经装成1.8了,maven3.3.3只需要1.7而已

CvdeMacBook-Pro:~ chenwei$ java -version

java version"1.8.0_51"Java(TM) SE Runtime Environment (build1.8.0_51-b16)

Java HotSpot(TM)64-Bit Server VM (build 25.51-b03, mixed mode)

配置了JAVA_HOME依然没用(`/usr/libexec/java_home`意思是执行``中的内容替换,/usr/libexec/java_home是mac推荐的设置方式)

CvdeMacBook-Pro:apache-maven-3.3.3 chenwei$ cat ~/.bash_profile

# Setting PATHfor Python 3.4# The orginal version is savedin.bash_profile.pysave

M3_HOME="/Users/chenwei/Developers/Maven/apache-maven-3.3.3"JAVA_HOME="`/usr/libexec/java_home`"PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"PATH="$JAVA_HOME/bin:$M3_HOME/bin:$PATH"export PATH

然后我查看mvn里面找JAVA_HOME的方式

bash-3.2$ vi `which mvn`

在里面找到加载方式

#

# Lookfor the Apple JDKs first to preserve the existing behaviour, and thenlook

#forthe new JDKs provided by Oracle.

#if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then#

# Apple JDKs

#

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Homefi

if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then#

# Apple JDKs

#

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Homefi

if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then#

# Oracle JDKs

#

export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Homefi

if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then#

# Apple JDKs

#

export JAVA_HOME=`/usr/libexec/java_home`fi

我想我已经配置过JAVA_HOME了不可能有问题啊

调试看看

bash-3.2$ sh -x mvn+ '[' -z '' ']'

+ '[' -f /etc/mavenrc ']'

+ '[' -f /Users/chenwei/.mavenrc ']'

+ cygwin=false

+ darwin=false

+ mingw=false

+ case "`uname`" in

++ uname

+ darwin=true

+ '[' -z '' ']'

+ '[' -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ']'

+ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home+ JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

这里发现没有找到JAVA_HOME,于是设置成jdk1.6了

由于我坚信我设置了~/.bash.profile 的JAVA_HOME.

echo $JAVA_HOME是有值的

然后看到mvn开头设置的#!/bin/sh,怀疑是sh找不到JAVA_HOME

试了一下

bash-3.2$ sh

sh-3.2$ echo$JAVA_HOMEsh-3.2$

果然如此,于是开始研究怎么设置sh的环境变量,把/etc/profile中的JAVA_HOME也按.bash_profile的方式设置了一遍

还是没用

然后开始研究shell的环境变量加载,看到erport的作用时,我终于反应过来,我设置了JAVA_HOME,但是没有export,只export了PATH.

于是修改.bash_profile

sh-3.2$ vi ~/.bash_profile

# Setting PATHfor Python 3.4# The orginal version is savedin.bash_profile.pysave

M3_HOME="/Users/chenwei/Developers/Maven/apache-maven-3.3.3"JAVA_HOME="`/usr/libexec/java_home`"PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"PATH="$JAVA_HOME/bin:$M3_HOME/bin:$PATH"export JAVA_HOME

export M3_HOME

export PATH

source一下,然后再运行mvn,终于搞定了

CvdeMacBook-Pro:~ chenwei$ mvn -v

Apache Maven3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)

Maven home:/Users/chenwei/Developers/Maven/apache-maven-3.3.3Java version:1.8.0_51, vendor: Oracle Corporation

Java home:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre

Default locale: zh_CN, platform encoding: UTF-8OS name:"mac os x", version: "10.10.4", arch: "x86_64", family: "mac"

这种低级错误,都是因为不熟悉linux导致的,简直笨得哭出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值