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

时间:2015-12-17 04:06:41

标签: java android macos gradle

我尝试从Android项目目录运行./gradlew,但出现错误:

  

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

     

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

我尝试过的事情:

  1. 导航至/Library/Java/JavaVirtualMachinesjdk1.8.0_11.jdk存在,但jdk1.7.0_79.jdk

  2. 也存在
  3. which java打印出/usr/bin/java

  4. printenv打印

  5.   

    ...

         

    JAVA_HOME = /库/爪哇/ JavaVirtualMachines / jdk1.8.0_11.jdk /内容/主页   JDK_HOME = /库/爪哇/ JavaVirtualMachines / jdk1.8.0_11.jdk /内容/首页

         

    ...

    1. javac -version打印javac 1.8.0_11

    2. which javac打印/usr/bin/javac

4 个答案:

答案 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 设置。 enter image description here

现在,单击 Gradle Settings 链接,您可以看到另一个窗口,其中指定了当前 JDK 位置。 enter image description here

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

就是这样!

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

干杯!