记一次在mac上配置Maven 的JAVA_HOME的惨痛经历

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

CvdeMacBook-Pro:~ chenwei$ mvn
Exception in 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 (build 1.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 PATH for Python 3.4
# The orginal version is saved in .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`

在里面找到加载方式

          #
           # Look for the Apple JDKs first to preserve the existing behaviour, and then look
           # for the 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/Home
           fi

           if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
             #
             # Apple JDKs
             #
             export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
           fi

           if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
             #
             # Oracle JDKs
             #
             export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
           fi

           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_HOME

sh-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 PATH for Python 3.4
# The orginal version is saved in .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 Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: /Users/chenwei/Developers/Maven/apache-maven-3.3.3
Java 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-8
OS name: "mac os x", version: "10.10.4", arch: "x86_64", family: "mac"

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

时间: 2024-10-27 09:28:25

记一次在mac上配置Maven 的JAVA_HOME的惨痛经历的相关文章

Mac上配置maven+eclipse+spark开发环境

1.安装jdk 2.下载scala-ide.官网:http://scala-ide.org 3.安装maven 4.在eclipse中,配置maven的安装了路径.偏好设置--->maven--->installpath 5.修改maven的镜像文件,即setting.txt中的mirror.具体修改为如下: <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</nam

mac 上配置 maven

1. 将maven压缩包解压至/Users/suqiuhui/Applications目录下的新建文件夹dev下 2. 打开终端(系统根目录,~/下) 3. 如果没有 .bash_profile 文件,运行如下命令创建该文件 touch .bash_profile 4. 用 vi 编辑该文件 vi .bash_profile 5. 添加以下语句 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; col

mac上配置php开发环境

玉忠之前在我的mac上配置过,当时项目不能区分大小写,所以就没成功,我现在在他得基础上继续配置,希望成功. 教程:http://my.oschina.net/joanfen/blog/171109 以这个教程为准. 1.apache sudo apachectl start sudo apachectl -v 2.php /etc/apache2/  找到httpd.conf  httpd-2.conf是default 取消#LoadModule php5_module libexec/apac

Delphi for iOS开发指南(1):在Mac上配置你的开发环境

http://cache.baiducontent.com/c?m=9d78d513d99516f11ab7cf690d678c3b584380122ba7a0020fd18438e4732b40506793ac57240773a4d20c1116dc4348adb0687d6d4566f58cc9fb57c0ebcc757a9f2743215dd01d05d36ef39c00388477cb4deedb5ca0bcfb3092aad2d2de49008a155e2bdea7960c575299

在mac上配置push notification的问题

在代码的deletegater中写: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after

教你在mac上配置adb环境变量!!附上adb无法识别M2的解决办法

[经验技巧] 教你在mac上配置adb环境变量!!附上adb无法识别M2的解决办法 楼主表于 2012-11-13 15:47:26 最近小编突然换了mac做了主力机,作为一个习惯在Windows使用adb刷机和安装卸载软件的屌丝来说,突然不能使用adb简直就是痛不欲生啊.还好经过度娘的指点,我成功的配置了环境变量. 下面就跟大家简单说一下具体的一些步骤,其中我为了大家更容易理解,精简掉了一些无关紧要的步骤,该教程只限于配置使用adb命令刷机或者做一些简单操作的用户~ -------------

eclipse上配置Maven

1.下载Maven版本 官网地址:http://maven.apache.org/download.cgi 直接下载Maven网址:https://mirrors.tuna.tsinghua.edu.cn/apache//maven/ 后缀为tar.gz的可用于Linux系统上,后缀为zip可直接用于windows系统上 binary表示编译后的二进制文件 source表示包含了源码 2.修改Maven配置文件参数(以apache-maven-3.3.9为例) apache-maven-3.3.

Mac上配置GTK环境

Mac上配置GTK环境 安装command line工具, 如果安装了Xcode, 就直接跳过该步骤 安装Homebrew 使用brew install pkg-config 使用brew install gtk+3 使用clang编译时, 使用clang 'pkg-config --libs --cflags gtk+-3.0' main.c 原文地址:https://www.cnblogs.com/caijunchao/p/10686703.html

如何在IDEA上配置Maven

IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的Java开发工具之一, IDEA是JetBrains公司的产品,现在有逐步取代老牌Java开发工具Eclipse的趋势.那本人也是从Eclipse 转到IDEA.那刚转换过来时,确实很不适应,不过好在坚持使用了几天后,确实感觉IntelliJ IDEA比Eclipse更加智能. Maven项目对象模型(POM),是一个项目管理工具可以通过一小段描述信息来管理项目的构建,报告和文档的软件.