Androidプロジェクトディレクトリから./gradlew
を実行しようとしましたが、次のエラーが発生します:
エラー:Java_HOMEが無効なディレクトリに設定されています:/ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
ご使用の環境のJava_HOME変数を、Javaインストールの場所と一致するように設定してください。
/Library/Java/JavaVirtualMachines
に移動します。 jdk1.8.0_11.jdk
は存在しますが、存在しますjdk1.7.0_79.jdk
which Java
は/usr/bin/Java
を出力します
printenv
プリント
...
Java_HOME = /ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home JDK_HOME = /ライブラリ/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
...
javac -version
印刷javac 1.8.0_11
which javac
印刷/usr/bin/javac
/ usr/libexec/Java_homeが存在するかどうかを確認します。もしそうなら、実行してみてください
export Java_HOME=`/usr/libexec/Java_home`
そしてgradlewビルドを再実行します。それが機能する場合は、それを永続化します
echo export "Java_HOME=\$(/usr/libexec/Java_home)" >> ~/.bash_profile
このような問題を整理するために、.bash_profile
に以下を追加しました。これには、setjdk {version}
を実行し、Javaバージョンをその場で切り替えることができるという利点があります。
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${Java_HOME+x}" ]; then
removeFromPath $Java_HOME
fi
export Java_HOME=`/usr/libexec/Java_home -v $@`
export PATH=$Java_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
#Default JDK to Java 8
setjdk 1.8