在安装 JavaJDK7 For Mac OS X-mvn-version 之后,仍然显示 Java 版本1.6.0_31

Oracle 在4月26日发布了针对 Mac OS X 的 Java JDK 7。我遵循了安装说明,当我在终端窗口中执行 Java 版本时,我得到:

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 使用 JavaJDK1.7.0 _ 04?

谢谢你的帮助。

97943 次浏览

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

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

终于在这里找到了答案:

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

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

在 ~/. profile 中设置 JAVA _ HOME

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

另外,我没有使用 JAVA _ HOME,但是我仍然得到了问题中显示的正确的 JAVA 版本“1.7.0 _ 04”。JAVA _ HOME 似乎是一个转移注意力的工具。也许 Maven 需要它,但 Eclipse 似乎并不使用它,启动 jar 文件也是如此。

在 JavaPreferences 工具中设置 Java7之后,它似乎不会影响启动。应用程序 java 文件。然而,它确实使’java-version’从终端很好地工作。除了 Java7选项之外,我尝试取消所有选项,然后 Eclipse 根本无法运行。

要查找来自 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>

Maven 仍然使用 Java6的原因是启动它的/usr/bin/mvn 脚本没有使用正确的 OS/X 方法来解析 Java Preferences 中指定的当前 Java 版本。详情请参阅 Maven 期刊:

Http://jira.codehaus.org/browse/mng-4226

投票决定可能会修复它; 同时,如果您修改/usr/bin/mvn 脚本,如注释 & 补丁中所示,您将获得期望的结果。

Ok on my machine. Yes, the Oracle installer didn't exactly do its job, and it confused me to no end after 1.6 was still running.

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 链接

查找器中的 /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

如果有人正在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 的建议。

它起作用了,但后来我注意到 JavaSDKMaven 使用的是 Java 版本: 1.6.0 _ 65,这不是我在系统上安装的最新 SDK。

一旦我设置了 JAVA _ HOME = /usr/libexec/java_home

它使用了正确的 SDK: Maven home:/usr/local/Cellar/Maven/3.1.1/libexec Java 版本: 1.7.0 _ 45,供应商: 甲骨文公司 Java Home:/Library/Java/JavaVirtualMachines/jdk1.7.0 _ 45. jdk/Content/Home/jre 默认语言环境: en _ US,平台编码: UTF-8 OS name: "mac os x", version: "10.9", arch: "x86_64", family: "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,供应商: 甲骨文公司 Java Home:/Library/Java/JavaVirtualMachines/jdk1.7.0 _ 45. jdk/Content/Home/jre 默认语言环境: en _ US,平台编码: UTF-8 OS name: "mac os x", version: "10.9", arch: "x86_64", family: "mac"

问题在于 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

如果您的 JAVA _ HOME 位于本地用户的 bash 中,那么无论您设置了什么 JAVA _ HOME,mvn 都将选择系统的当前 JAVA 版本。

因此,首先运行命令‘ 哪一个’并检查您使用的是哪个可执行 mvn。之后,编辑那个 mvn 文件更改 JAVA _ HOME变量到您首选的 java 主页。