在OSX上运行./gradlew时,JAVA_HOME设置为无效目录

EGH*_*HDK 13 java macos android gradle

我尝试./gradlew从Android项目目录运行,但是我得到一个错误:

错误:JAVA_HOME设置为无效目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home

请在您的环境中设置JAVA_HOME变量以匹配Java安装的位置.

我试过的事情:

  1. 导航到/Library/Java/JavaVirtualMachines.jdk1.8.0_11.jdk存在,但也存在jdk1.7.0_79.jdk

  2. which java 打印出来 /usr/bin/java

  3. printenv 版画

...

JAVA_HOME =/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home JDK_HOME =/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home

...

  1. javac -version 版画 javac 1.8.0_11

  2. which javac 版画 /usr/bin/javac

lod*_*ock 27

检查/ usr/libexec/java_home是否存在.如果是,那么尝试运行

export JAVA_HOME=`/usr/libexec/java_home`
Run Code Online (Sandbox Code Playgroud)

并重新运行你的gradlew构建.如果它工作,那么使其永久化

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)


Eri*_*ing 21

对我来说,无论我尝试什么,我都会遇到这个错误。删除 JAVA_HOME var 对我有用。

  • 是的,完美运行!我注意到gradle已经初始化了项目目录中的JAVA_HOME(在我的例子中,我使用了flutter),所以我删除了.zhrc中的JAVA_HOME (4认同)

Rah*_*ran 13

如果您在 2021 年升级到Android Studio Arctic Fox (2020.3.1) Stable后看到此消息,那么以下答案应该有助于您解锁。

从“文件”菜单打开“项目结构”窗口,您可以看到 JDK 位置现在已移至 Gradle 设置中。 在此输入图像描述

现在,单击 Gradle 设置链接,您可以看到另一个窗口,其中指定了当前 JDK 位置。 在此输入图像描述

现在您应该编辑~/.bashrcOR~/.zshrc来更新 JAVA_HOME 环境变量的值。

就是这样!

现在运行source ~/.bashrcORsource ~/.zshrc命令或重新启动终端并享受./gradlew在项目中运行该命令的乐趣。

干杯!


gre*_*ker 1

我已将以下内容添加到我的中.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
Run Code Online (Sandbox Code Playgroud)