安装Java JDK 7之后对于Mac OS X - mvn -version仍然显示java版本1.6.0_31

问题

Oracle于4月26日为Mac OS X发布了Java JDK 7.我按照安装说明操作,当我在终端窗口中执行java -version时,我得到:

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

但是,当我在终端窗口中执行mvn -version时,我得到:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"

如何让Maven使用Java JDK 1.7.0_04?

谢谢你的帮助。


#1 热门回答(124 赞)

终于找到了答案:
http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7
你应该在Mac上使用JAVA_HOME=$(/usr/libexec/java_home),然后通过"Java Preferences.app"设置当前的jdk。

在〜/ .profile中设置JAVA_HOME


#2 热门回答(34 赞)

问题是JavaVm.framework版本中的符号链接"CurrentJDK"指向旧的jdk,因此当我使用以下命令将CurrentJDK设置为最新的(1.7.0_45)时,它可以工作

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

参考:http://java.dzone.com/articles/installing-jdk-7-mac-os-x


#3 热门回答(17 赞)

要从Java首选项中查找路径,请尝试/usr/libexec/java_home -X

我的Java7条目如下所示:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>