安装Java JDK 7之后对于Mac OS X – mvn -version仍然显示java版本1.6.0_31
Oracle在4月26日发布了针对Mac OS X的Java JDK 7。我遵循了安装说明,当我在terminal窗口中执行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)
但是当我在terminal窗口中执行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?
谢谢您的帮助。
终于在这里find了答案:
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
问题是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首选项中findpath,请尝试/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>
您需要将JAVA_HOME
环境variables更改为新的JDK 1.7位置。
看看这个问题 ,可能定义JAVA_HOME的位置。 在terminal中,键入which java
来查找Java安装的path,然后更新JAVA_HOME
以指向该path(但不包括尾部bin文件夹)。
如果有人在运行Mac OSX的“64位Mac”上安装Maven,请保存一段时间,并试着安装Maven。 我试图跟随这(因为在小牛的java_home的位置已经改变,失败:
http://maven.apache.org/download.cgi
我拉我的头发,直到我发现这个网站,它build议您安装自制软件,并按照此页面上的说明: 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 home:/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”
成功! 但等等…下一次我打开terminal,运行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公司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”
Maven仍在使用Java 6的原因是启动它的/ usr / bin / mvn脚本不使用正确的OS / X方法来parsingJava Preferences中指定的当前Java版本。 有关详细信息,请参阅此Maven问题:
http://jira.codehaus.org/browse/MNG-4226
投票可能会得到修复; 同时,如果你修改了/ usr / bin / mvn脚本,就像在这个问题上的注释和补丁所显示的那样,你将会得到想要的结果。
好的在我的机器上。 是的,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
在terminal
./Home -> /System/Library/Frameworks/JavaVM.framework/Home
去搞清楚。
我在这里find了1.7,我用它来构build: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
我认为问题部分在于Java启动机制。 我已经能够让Eclipse在Java7下运行我的代码,但我认为eclipse本身仍然在Java6下运行。 另外,我有一个java程序,最近编译了一年前,使用jarbundler-2.1.0.jar(选项jvmversion =“1.6+”)构build。 当我双击.app文件运行Java6,但是当双击.app文件中的.jar文件时,它运行Java7。
此外,我不使用JAVA_HOME,但我仍然得到问题中显示的正确的Java版本“1.7.0_04”。 JAVA_HOME似乎是一个红鲱鱼。 也许Maven需要它,但Eclipse似乎并没有使用它,也没有启动jar文件。
在Java Preferences工具中设置Java7之后,似乎不会影响启动.app java文件。 但是,它确实使terminal的'java -version'很好地工作。 我试过除Java7选项之外的所有东西,然后Eclipse根本就不运行。
如果您的JAVA_HOME位于本地用户的bash中,则无论您设置了什么JAVA_HOME,mvn都将select系统的当前Java版本。
因此,首先运行命令' 哪个mvn ',并检查你正在使用哪个可执行文件mvn。 之后, 编辑该mvn文件并将JAVA_HOMEvariables更改为您的首选java家庭。