2012-04-26 69 views
113

甲骨文发布的Java JDK 7 4月26日为Mac OS X.我也跟着安装说明,当我做Java的版本中终端窗口,我得到:安装Java JDK 7对于Mac OS X之后 - MVN -version仍显示Java版本1.6.0_31

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?

感谢您的帮助。

回答

124

终于找到了答案在这里:

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文件

+4

我最近安装了Java 6,我无法找到JavaPreferences.app bcz mac现在不提供支持Java。现在可以告诉我如何在不使用JavaPreferences的情况下设置我的jvm。 – amod 2013-02-11 06:41:50

+0

很好的答案,谢谢 – pdenti 2013-02-18 15:07:55

+2

你可以接受你自己的答案。这将显示我们所有其他人解决了这个问题。并且你将有10个以上的字体:) – Ibolit 2013-03-17 10:58:58

9

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

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

+0

你确定我需要在Mac OS X上?过去我不必这样做。如果确实需要设置JAVA_HOME,我怎么知道安装Java JDK 7时没有给出任何安装路径信息,并且Mac上的Java Preference实用程序应用程序没有显示JDK 1.7 – 2012-04-26 19:46:26

+0

的路径如果你看看上面的问题,你可以看到JAVA_HOME已经被定义,并且当前指向了旧的1.6 JDK。我不熟悉如何在OSX中更改环境变量,但这是Maven默认使用的。 – Nate 2012-04-26 20:32:34

+0

问题是Apple更新通常会更新java版本并设置JAVA_HOME值。在.bashrc中设置JAVA_HOME值在OS X上不起作用,就像它在linux中一样。另外,我不能在哪里找到Oracle安装的JDK 7的路径。 – 2012-04-26 21:55:51

0

设置JAVA_HOME我认为,问题部分在于与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后,它似乎并没有影响到启动。应用程序的Java文件。但是它确实使终端的'java -version'很好地工作。我尝试了除Java7选项之外的任何其他选项,然后Eclipse根本无法运行。

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> 
+6

grrrrr,我做到了,它为我的jdk1.7列出的路径根本不存在:( – 2012-08-06 15:22:08

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

取景器中的GetInfo点/Library/Java/Home/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

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

去图一个SIM卡的链接。

我发现这里1.7和我使用的建设有:​​

6

在任何人的情况下在64位的Mac上安装Maven运行Mac OSX“小牛”保存自己一些时间和一些头发拉尝试安装Maven。我试图按照这个(这失败,因为JAVA_HOME的位置已经改变了小牛:

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

我拉我的头发,直到我发现了这个网站,建议您安装自制软件,并按照指示此页面上:http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac-osx-109.html

完成后不要惊慌,当$行家 - 版本无法正常工作,而不是使用$ 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 home:/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 |须藤发球-a的/ etc/mavenrc

现在:

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

+0

'export JAVA_HOME = \''/ usr/libexec/java_home \'''''''很好地为我获得正确导出的JAVA_HOME var 。 – cdeszaq 2013-12-16 21:17:14

33

的问题是,符号链接“CurrentJDK”的JavaVm.framework点的版本里面老的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

+0

请确保你指定了'jdk1.7.0_45.jdk'的正确版本,我的'jdk1.7.0_51.jdk' – Voles 2014-04-09 10:04:37

+0

这是有效的。为什么它不被检查为正确? – twittfort 2014-08-08 05:56:35

+1

我想知道为什么Oracle开发者没有做到这一点,这个答案节省了我的一天 – 2014-11-29 10:49:12

0

如果JAVA_HOME位于本地用户的庆典,MVN会选择系统当前的Java版本,无论你设置什么JAVA_HOME。

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