【问题标题】:Gradle gets wrong value for JAVA_HOME in macGradle 在 mac 中为 JAVA_HOME 获取错误的值
【发布时间】:2016-11-29 09:55:17
【问题描述】:

在尝试使用 gradle 从 Jenkins 构建 android 应用程序时,我 得到以下错误:

ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/java-8-oracle
Please set the JAVA_HOME variable in your environment to match the location of your Java installation.

Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE

但是,当我检查 JAVA_HOME 变量时,我得到:

Macs-Mac-mini:~ mac$ echo $JAVA_HOME 
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

正在运行java -version

Macs-Mac-mini:~ mac$ java -version 
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

Gradle 为什么会找到/usr/lib/jvm/java-8-oracle

试过Gradle finds wrong JAVA_HOMEGradle does not recognize the JAVA_HOME

【问题讨论】:

  • “运行 java -version 还确认 JAVA_HOME 设置正确并且在 PATH 上”。那句话是不正确的,java -version 使用了 PATH 而没有使用$JAVA_HOME
  • 好的。更正声明。

标签: macos jenkins gradle gradlew java-home


【解决方案1】:

经过大量调试我发现,Gradle 是从 Jenkins 主 JDK 配置中获取 $JAVA_HOME 变量值,而不是从节点的 $JAVA_HOME 变量中获取。

我从 Jenkins master 中删除了默认的 JDK 配置路径,Gradle 从节点中获取了 $JAVA_HOME 变量值。

【讨论】:

    【解决方案2】:

    您没有以 Jenkins 用户身份登录,因此echo $JAVA_HOME 仅显示当前用户的JAVA_HOME,可能与 Jenkins 用户不同。

    幸运的是,您可以从 Jenkins 用户界面设置环境变量。 (参见this example,只需将JMETER_HOME 替换为JAVA_HOME

    【讨论】:

    • 我也试过了,但是还是报同样的错误。
    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多