无法在 Mac Lion 上升级 Maven - 环境变量
Posted
技术标签:
【中文标题】无法在 Mac Lion 上升级 Maven - 环境变量【英文标题】:Can't upgrade Maven on Mac Lion - Environment Variables 【发布时间】:2015-10-08 17:54:53 【问题描述】:我的生命体征:OS 10.7.5 Lion,Java 版本“1.7.0_79”,Maven 版本 3.0.3。
我对这里的环境变量很陌生,并且在使用 Maven 时遇到了很多麻烦。我从 Homebrew 获得了当前版本,但我需要更新的版本。我按照此页面 (Maven Install on Mac OS X) 中的 snooze92 说明尝试安装最新版本的 Maven,3.3.3。我当前的版本 3.0.3 存储在 /usr/share/java/maven-3.0.3
中,并且在 /usr/share/maven
也有指向该目录的快捷方式。
echo $JAVA_HOME
返回/System/Library/Frameworks/JAVAVM.framework/Versions/CurrentJDK/Home
。
但运行 mvn --version
会返回一堆详细信息,包括:
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre
(与 JAVA_HOME 指向的路径不同的文件夹。)
通常,echo $M2_HOME
不返回任何内容。在这种情况下,Maven 3.0.3 工作得很好。如果我按照 snooze92 的建议创建 $M2_HOME
环境变量,并使用以下命令将其添加到我的路径中:
export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.3
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
Maven 停止工作;输入 mvn --version
会返回以下内容:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:401)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
退出终端(或从我的 .bash_profile 文件中删除上述行并重新打开)使 Maven 再次正常工作,尽管它总是恢复到版本 3.0.3。
我还尝试将此页面 (http://www.mkyong.com/maven/install-maven-on-mac-osx/) 上的命令添加到我的 .bash_profile 文件中:
export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.3
export PATH=$PATH:$M2_HOME/bin
这会导致 Maven 返回错误消息:
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
【问题讨论】:
【参考方案1】:您可以编辑 .bash_profile
以导出 JDK 7 Mac OS 安装的动态路径。这可以通过添加为第一行来简单地实现:
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
因此,应保证在运行时不使用 1.6 风格的 JDK(例如,由 Apple 提供的),而是在您的系统环境中使用可工作的 JDK 7。尝试验证
的输出java -version
在您编辑 .bash_profile
文件后的新终端实例中。它应该给你 1.7.x Java。在此步骤之后,您的新 Maven 版本应该可以工作并且可以通过
mvn -version
解释:
如果你改用/System/Library/Frameworks/JAVAVM.framework/Versions/CurrentJDK/Home
,你的JAVA_HOME
会得到类似的东西:
java 版本 "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64 位服务器 VM(内部版本 20.65-b04-466.1,混合模式)
这不是 Maven 3.3.x 想要/需要的
【讨论】:
以上是关于无法在 Mac Lion 上升级 Maven - 环境变量的主要内容,如果未能解决你的问题,请参考以下文章