在Mac OS X上安装Java JDK 7之后-mvn -version仍显示Java版本1.6.0_31


117

Oracle在4月26日针对Mac OS X发布了Java JDK7。我按照安装说明进行操作,在终端窗口中执行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?

谢谢您的帮助。

Answers:


126

终于在这里找到了答案:

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


4
我最近安装了Java 6,但无法找到JavaPreferences.app。bcz mac现在不支持Java。现在可以告诉我如何在不使用JavaPreferences的情况下设置我的jvm。
13年

2
您可以接受自己的答案。这将向我们所有人展示这已解决了这个问题。您将再获得10点:)
Ibolit

5
我添加到〜/ .bash_profile:export JAVA_HOME = $(// usr / libexec / java_home)
2013年

1
或者,您可以一次性完成“导出JAVA_HOME = $(/ usr / libexec / java_home -v 1.6)”,而无需使用Java Preferences.app进行更改
mac

无法在El Captian中打开Java Preferences App,我从System Preferences-> Java进入。
Wolf7176 '16

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


确保为您指定正确的版本jdk1.7.0_45.jdk,我的是jdk1.7.0_51.jdk
ndequeker 2014年

1
我想知道为什么Oracle开发人员没有自动做到吗?对我来说这不是小事。这个答案救了我一天。
伊万·沃罗林

这对我不起作用。我在埃尔卡皮安。mvn java版本拒绝更改。JAVA_HOME是准确的
Wolf7176 '16

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>

6
grrrrr,我这样做了,它为我的jdk1.7列出的路径根本不存在:(
Dean Hiller

9

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

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


您确定在Mac OS X上需要吗?过去我不必这样做。如果确实需要设置JAVA_HOME,我怎么知道安装Java JDK 7时使用的路径没有提供任何安装路径信息,而Mac上的Java Preference Utility应用程序未显示JDK 1.7的路径
布鲁斯·菲利普斯(Bruce Phillips)

如果您在上面的问题中查看,您会看到JAVA_HOME已经被定义,并且当前指向旧的1.6 JDK。我不熟悉如何在OSX中更改环境变量,但这是Maven默认使用的方法。
Nate 2012年

问题在于,Apple更新通常会更新Java版本并设置JAVA_HOME值。与在Linux中一样,在.bashrc中设置JAVA_HOME值在OS X上不起作用。另外,在哪里也找不到Oracle安装的JDK 7的路径。
布鲁斯·菲利普斯

另外Nate我的问题不是您链接到的帖子的重复项。我在OS X和使用Oracle安装适用于Mac OS X,这是刚刚发布的26月已经更新到Java JDK 7
布鲁斯·菲利普斯

没有Mac而不是.bashrc使用.bash_profile,并且您应该能够在/ System / Library / Java / JavaVirtualMachines /下找到安装,在那里您需要指向新的1.7.0 Java版本
peter_budo 2012年

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建议。

它起作用了,但是后来我注意到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,供应商:Oracle Corporation Java主页:/Library/Java/Java/JavaVirtualMachines/jdk1.7.0_45。 jdk / Contents / Home / jre默认语言环境:en_US,平台编码:UTF-8操作系统名称:“ mac os x”,版本:“ 10.9”,拱门:“ 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主页:/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”


export JAVA_HOME=`/usr/libexec/java_home`对我来说很好,可以正确导出JAVA_HOME var。
cdeszaq

4

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

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

对其进行投票可能会使其修复。同时,如果您按照该问题的注释和补丁所示更改/ usr / bin / mvn脚本,则将获得所需的结果。


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

/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


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偏好设置工具中设置了Java7之后,它似乎并不影响启动.app java文件。但是,它确实使终端的“ java -version”能够很好地工作。我尝试取消选中除Java7选项之外的所有内容,然后Eclipse根本无法运行。


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.