无法在Mac Lion上升级Maven - 环境变量

时间:2015-07-19 14:48:40

标签: java macos maven environment-variables

我的命脉: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 个答案:

答案 0 :(得分: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 version" 1.6.0_65" Java(TM)SE运行时环境(构建   1.6.0_65-b14-466.1-11M4716)Java HotSpot(TM)64位服务器VM(版本20.65-b04-466.1,混合模式)

这不是您想要/需要的Maven 3.3.x