我尝试从Android项目目录运行./gradlew
,但出现错误:
错误:JAVA_HOME设置为无效目录: /Library/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 = /库/爪哇/ JavaVirtualMachines / jdk1.8.0_11.jdk /内容/主页 JDK_HOME = /库/爪哇/ JavaVirtualMachines / jdk1.8.0_11.jdk /内容/首页
...
javac -version
打印javac 1.8.0_11
which javac
打印/usr/bin/javac
答案 0 :(得分:23)
检查/ usr / libexec / java_home是否存在。如果是,则尝试运行
export JAVA_HOME=`/usr/libexec/java_home`
并重新运行你的gradlew构建。如果它有效,那么用
使其永久化echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
答案 1 :(得分:2)
我已将以下内容添加到.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
答案 2 :(得分:2)
对我来说,无论尝试什么,都会遇到该错误。删除JAVA_HOME变量对我有用。
答案 3 :(得分:0)
如果您在 2021 年升级到 Android Studio Arctic Fox (2020.3.1) Stable 后看到此消息,那么以下答案应该有助于您解除封锁。
从“文件”菜单中打开“项目结构”窗口,您可以看到 JDK 位置现在已移至 Gradle 设置。
现在,单击 Gradle Settings 链接,您可以看到另一个窗口,其中指定了当前 JDK 位置。
现在您应该编辑您的 ~/.bashrc
OR ~/.zshrc
以更新 JAVA_HOME 环境变量的值。
就是这样!
现在运行 source ~/.bashrc
OR source ~/.zshrc
命令或重新启动您的终端并享受在您的项目中运行 ./gradlew
命令的乐趣。
干杯!