2010-01-06 57 views
14

試圖讓Maven,Java和OS X一起玩起來不錯 - 我在Linux和Windows機器上多次沒有問題地完成了一些操作。我認爲我需要做的只是下載Maven,設置我的環境變量,我會很好。因此,這裏是從我的.bash_profile的一個片段:Maven,JAVA_HOME w/OS X

export JAVA_HOME=/Library/Java/Home/ 
export M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1 
export PATH=$PATH:$M2_HOME/bin 

JAVA_HOME設置是蘋果建議在this Q&A page使用什麼。然而,推出了終端和運行mvn --version後,這裏的輸出...

Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400) 
Java version: 1.6.0_17 
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home 
Default locale: en_US, platform encoding: MacRoman 
OS name: "mac os x" version: "10.6.2" arch: "x86_64" Family: "mac" 

爲什麼我在我的.bash_profile設置JAVA_HOME正在Maven的忽略任何想法?這是造成問題的原因,因爲在Maven使用的JAVA_HOME中找不到像rt.jar這樣的東西。我可以通過在Maven正在使用的主目錄中創建符號鏈接和其他hackery來解決這個問題,但我寧願讓它正常工作,因爲下次Apple推送Java更新時,這隻會炸燬我。感謝您的幫助...

回答

-3

以及我會檢查的第一件事是mvn是否是一個腳本。如果是這樣,你可以看到它是如何採購環境的。如果不是,我會查找任何通常名爲.mvnrc的配置文件或/ etc中的某些文件。當然,它不會傷害到RTFM!

+2

這是一個腳本,我可以看到這個區塊 如果[-z 「$ JAVA_HOME」];然後 JAVA_HOME = /系統/庫/框架/ JavaVM.framework /版本/ $ {JAVA_VERSION} /主頁 fi 可能會影響的東西,但運行它自己的$ JAVA_HOME var被設置,因此if子句被忽略。 至於閱讀手冊,已完成。正如搜索Maven用戶列表一樣。這是依靠黑客解決方案之前的最後一招。如果你沒有答案,不要回答。 – ian 2010-01-06 14:54:46

+0

以上格式的道歉... – ian 2010-01-06 14:55:41

2

在我的Mac上,/ Library/Java/Home是一個符號鏈接(實際上是一系列符號鏈接的開始),最終指向/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home。所以我不認爲maven會忽略任何東西。它只是給你實際的位置。

1

我有相同的設置和所有工作正常。 UNSET你的shell腳本中的「JAVA_HOME」環境變量。 Mac安裝會照顧到這一點。反正你錯了。

取消設置,源文件或啓動shell並重試。

11

的問題是,符號鏈接「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

我得到了「sudo rm CurrentJDK」的「不允許操作」。我在El Captain – Wolf7176 2016-08-29 05:52:20

+0

您確定您當前的用戶有權讀取/寫入此文件夾嗎?最好使用管理員用戶 – 2016-08-29 05:55:02