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

时间:2012-04-26 19:16:19

标签: java macos maven java-7

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?

感谢您的帮助。

9 个答案:

答案 0 :(得分:125)

终于找到了答案:

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

答案 1 :(得分: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

答案 2 :(得分: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>

答案 3 :(得分:9)

您需要将JAVA_HOME环境变量更改为新的JDK 1.7位置。

查看this question可能定义JAVA_HOME的位置。在终端中,键入which java以查找Java安装的路径,然后更新JAVA_HOME以指向该路径(但排除尾随bin文件夹)。

答案 4 :(得分:7)

如果有人在64位Mac上安装Maven,那么运行Mac OSX的“Mavericks”会节省一些时间,并且会尝试安装Maven。我试图遵循这个(失败了,因为java_home的位置在Mavericks上发生了变化:

http://maven.apache.org/download.cgi

我一直拉着我的头发,直到找到这个网站,建议您安装自制软件并按照此页面上的说明进行操作:http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac-osx-109.html

一旦完成,当$ maven -version不起作用时不要惊慌,而是使用$ mvn --version作为maven.apache.org/download.cgi推荐。

它有效,但后来我注意到Java SDK Maven使用的是Java版本:1.6.0_65,这不是我在系统上安装的最新SDK。

设置JAVA_HOME = /usr/libexec/java_home

它使用了正确的SDK: Maven主页:/usr/local/Cellar/maven/3.1.1/libexec Java版本:1.7.0_45,供应商:Oracle Corporation Java主页:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre 默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“mac os x”,版本:“10.9”,arch:“x86_64”,系列:“mac”

成功! 可是等等... 下次我打开终端并运行mvn -v它又回到了java版本1.6。 WTH!

它从我读过的东西中得到的某种假设错误: echo JAVA_HOME = /usr/libexec/java_home -v 1.7 | sudo tee -a / etc / mavenrc

现在:

Maven home:/usr/local/Cellar/maven/3.1.1/libexec Java版本:1.7.0_45,供应商:Oracle Corporation Java主页:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre 默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“mac os x”,版本:“10.9”,arch:“x86_64”,系列:“mac”

答案 5 :(得分:4)

Maven仍在使用Java 6的原因是启动它的/ usr / bin / mvn脚本没有使用正确的OS / X方法来解析Java Preferences中指定的当前Java版本。有关详细信息,请参阅此Maven问题:

http://jira.codehaus.org/browse/MNG-4226

投票可能会得到修复;与此同时,如果您更改/ usr / bin / mvn脚本,如注释和&amp;修补该问题,您将获得所需的结果。

答案 6 :(得分:2)

我的机器上没问题。是的,Oracle安装程序并没有完全正常工作,并且在1.6仍在运行之后让我感到困惑。

java run time was updated 

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

但SDK HOME实际上是一个仍然指向1.6的SIM链接

发现者GetInfo中的

/Library/Java/Home指向/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

终端

中的

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

去图。

我在这里找到了1.7,我正在使用它来构建:/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

答案 7 :(得分:0)

我认为问题部分在于java启动机制。我已经能够让Eclipse在Java7下运行我的代码,但我认为eclipse本身仍在Java6下运行。另外,我有一个java程序,它是在一年前最后编译的,并使用jarbundler-2.1.0.jar(带有选项jvmversion =“1.6+”)构建。当我双击.app文件时,它运行Java6,但是当我双击.app内的.jar文件时,它运行Java7。

另外,我不使用JAVA_HOME,但我仍然得到问题中显示的正确的java版本“1.7.0_04”。 JAVA_HOME似乎是一只红鲱鱼。也许Maven需要它,但是Eclipse似乎没有使用它,也没有启动jar文件。

在Java Preferences工具中设置Java7后,它似乎不会影响启动.app java文件。但是它确实使终端的'java -version'工作得很好。我尝试取消选中除Java7选项之外的所有内容,然后Eclipse根本不会运行。

答案 8 :(得分:0)

如果你的JAVA_HOME位于本地用户的bash,无论你设置了什么JAVA_HOME,mvn都会选择系统的当前java版本。

因此首先运行命令' mvn '并检查您正在使用的可执行文件mvn。之后编辑mvn文件将JAVA_HOME 变量更改为您首选的Java主页。