【问题标题】:After Installing Java JDK 7 For Mac OS X - mvn -version still shows java version 1.6.0_31为 Mac OS X 安装 Java JDK 7 后 - mvn -version 仍然显示 java 版本 1.6.0_31
【发布时间】:2012-05-07 13:37:12
【问题描述】:

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?

感谢您的帮助。

【问题讨论】:

    标签: java macos maven java-7


    【解决方案1】:

    终于在这里找到了答案:

    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

    【讨论】:

    • 我最近安装了 Java 6,但无法找到 JavaPreferences.app bcz mac 现在不提供对 Java 的支持。现在可以告诉我如何在不使用 JavaPreferences 的情况下设置我的 jvm。
    • 您可以接受自己的答案。这将向我们其他所有人表明这解决了这个问题。你将有 10 个以上的 ponts :)
    • 我添加到 ~/.bash_profile: export JAVA_HOME=$(/usr/libexec/java_home)
    • 或者您可以一次性执行“export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)”,而不是使用 Java Preferences.app 进行更改
    • 无法在 El Captian 中打开 Java Preferences App,我从 System Preferences -> Java 去了。
    【解决方案2】:

    问题是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

    【讨论】:

    • 确保为jdk1.7.0_45.jdk指定正确的版本,我的是jdk1.7.0_51.jdk
    • 我想知道为什么 Oracle 开发人员不自动执行此操作?这对我来说不是微不足道的。这个答案拯救了我的一天。
    • 这对我不起作用。我在 el Captian 上。 mvn java 版本拒绝更改。 JAVA_HOME 准确
    【解决方案3】:

    要从 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>
    

    【讨论】:

    • grrrrr,我这样做了,它为我的 jdk1.7 列出的路径根本不存在:(
    【解决方案4】:

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

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

    【讨论】:

    • 你确定我需要在 Mac OS X 上这样做吗?过去我不必这样做。如果我确实需要设置 JAVA_HOME 我怎么知道要使用什么路径,因为安装 Java JDK 7 没有给我任何安装路径信息,并且 Mac 上的 Java Preference 实用程序应用程序没有显示 JDK 1.7 的路径
    • 如果您查看上面的问题,您可以看到 JAVA_HOME 已经定义并且当前指向旧的 1.6 JDK。我不熟悉如何在 OSX 中更改环境变量,但这是 Maven 默认使用的。
    • 问题是Apple更新通常会更新java版本并设置JAVA_HOME值。在 .bashrc 中设置 JAVA_HOME 值在 OS X 上无法像在 linux 中那样工作。我也找不到 Oracle 安装的 JDK 7 的路径。
    • 另外,我的问题不是您链接到的帖子的副本。我在 OS X 上并已使用 Oracle install for Mac OS X 更新到 Java JDK 7,该版本刚刚于 4 月 26 日发布。
    • 没有 Mac 而不是 .bashrc 使用 .bash_profile,您应该能够在 /System/Library/Java/JavaVirtualMachines/ 下找到您需要指向新 1.7.0 Java 版本的安装位置跨度>
    【解决方案5】:

    如果有人在运行 Mac OSX 'Mavericks' 的 64 位 Mac 上安装 Maven,可以为自己节省一些时间和一些麻烦来尝试安装 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 不起作用时不要惊慌,而是按照 maven.apache.org/download.cgi 的推荐使用 $mvn --version。

    它有效,但后来我注意到 Maven 使用的 Java SDK 是 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,供应商:甲骨文公司 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 版。哇!

    它是我阅读使用的某种假定错误: 回声 JAVA_HOME=/usr/libexec/java_home -v 1.7 | sudo tee -a /etc/mavenrc

    现在:

    Maven 主页:/usr/local/Cellar/maven/3.1.1/libexec Java 版本:1.7.0_45,供应商:甲骨文公司 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”

    【讨论】:

    • export JAVA_HOME=`/usr/libexec/java_home` 对我来说效果很好,可以正确导出 JAVA_HOME var。
    • 对我来说罪魁祸首是 /etc/mavenrc。当我需要 12 时,它被硬编码为 1.8。
    【解决方案6】:

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

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

    投票可能会解决问题;同时,如果您更改 /usr/bin/mvn 脚本,如 cmets & patch 中所示,您将获得所需的结果。

    【讨论】:

      【解决方案7】:

      在我的机器上没问题。是的,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实际上是一个sim链接仍然指向1.6

      finder 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

      【讨论】:

        【解决方案8】:

        我认为问题部分在于 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 根本无法运行。

        【讨论】:

          【解决方案9】:

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

          因此首先运行命令 'which mvn' 并检查您正在使用哪个可执行 mvn。之后编辑该 mvn 文件将 JAVA_HOME 变量更改为您喜欢的 java home。

          【讨论】:

            猜你喜欢
            • 2011-12-05
            • 1970-01-01
            • 2012-09-27
            • 2017-01-23
            • 2021-05-09
            • 2011-03-28
            • 2017-02-11
            • 1970-01-01
            • 2022-01-20
            相关资源
            最近更新 更多