118

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?

谢谢您的帮助。

4

9 回答 9

128

终于在这里找到了答案:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

您应该JAVA_HOME=$(/usr/libexec/java_home)在 Mac 上使用,然后通过“Java Preferences.app”设置当前 jdk。

在 ~/.profile 中设置 JAVA_HOME

于 2012-04-28T13:26:28.433 回答
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

于 2013-12-23T09:26:03.350 回答
17

要从 Java Preferences 中查找路径,请尝试 /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>
于 2012-04-30T04:45:59.357 回答
10

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

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

于 2012-04-26T19:18:59.393 回答
7

如果有人在运行 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 不起作用时不要惊慌,而是使用 $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。哇!

它是我阅读使用的某种假定错误:echo 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,供应商: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”

于 2013-11-25T05:27:14.230 回答
4

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

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

投票可能会解决问题;同时,如果您更改 /usr/bin/mvn 脚本,如该问题的评论和补丁中所示,您将获得所需的结果。

于 2012-08-08T21:58:09.687 回答
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实际上是一个sim链接仍然指向1.6

/Library/Java/Home在查找器 GetInfo 指向/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

于 2013-07-28T17:26:46.117 回答
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 根本无法运行。

于 2012-04-30T04:31:23.780 回答
0

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

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

于 2017-11-02T12:23:47.550 回答