2012-04-26 71 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家。