我們今天要做的事情,是在 Mac OSX 的使用者資料夾底下( ~/ ),建立/修改 .bash_profile 檔案,增加 Java 跟 Maven 的 PATH 設定,使得這兩個開發上很重要的工具能夠運作。我是因為要使用 IntelliJ 來開發基於 Android Bootstrap 之上的 Android App 開發,完整的 IntelliJ + Android Bootstrap 設定可以參考之前我在 Windows 下安裝的筆記:
[Android] Android Bootstrap + Intellij + Maven 安裝教學
。然後我在 Mac OSX 設定上遇到了下面兩個問題...

Exception in thread "main" java.lang.NoClassDefFoundError

情境:terminal 輸入 java -version

簡單來說,通常是 PATH 沒有設定正確。(一般來說是您 PATH 中指定的 java 版本與系統正在使用的不同)
底下
從 Oracle 官網上下載了 jdk-7u51-macosx-x64.dmg
我發現我有兩個 java 資料夾 (各自都有 bin/ 在其下)
(1) /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
(2) /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

所以應該這麼設定 $JAVA_HOME 跟 $PATH:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

第一張圖片就是學弟解救我,讓我豁然開朗的圖

找不到或無法載入主要類別 org.codehaus.plexus.classworlds.launcher.Launcher

情境:terminal 輸入 mvn -version

同時,我用 homebrew 安裝的 maven 也發生災情
才發現我原本設定的 /usr/local/Cellar/maven/3.1.1/bin,其實是 /usr/local/Cellar/maven/3.1.1/libexec/bin/mvn 的替身(捷徑),雖然我不太確定為什麼這樣不行,但是如果你也發生這個狀況,請注意 不要指定替身(捷徑),而是必須指定原本所在的位置

export M2_HOME=/usr/local/Cellar/maven/3.1.1/libexec
export M2=$M2_HOME/bin
export PATH=$PATH:$M2

最後,附上正確可運行的部分 .bash_profile 設定:

# Set the Java home path env
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

# Set Maven Home
export M2_HOME=/usr/local/Cellar/maven/3.1.1/libexec
export M2=$M2_HOME/bin

# Android Exports
export ANDROID_HOME=/Applications/adt-bundle/sdk
export ANDROID_SDK=$ANDROID_HOME
export ANDROID_TOOLS=$ANDROID_HOME/tools

# path
PATH=$PATH:~/bin
export PATH

# Add Java home to my path
export PATH=$JAVA_HOME/bin:$PATH

# Add maven home to my path
export PATH=$PATH:$M2

# Add Android Tools to my path
export PATH=$PATH:$ANDROID_TOOLS
export PATH=$PATH:$ANDROID_HOME/platform-tools

Comments

comments powered by Disqus
Copyright © 2013 Andro Chen
Powered by Logdown and Greyshade
Favicon from The Noun Project