摇篮忽略守护忽略标志

问题描述:

我在MacOS X 10.12.1与brew install gradle安装在运行摇篮3.2.1,没有设置任何ENV变量等自己,试图使用Java 9 EA:摇篮忽略守护忽略标志

gradle build -Dorg.gradle.java.home=~/jdk-9.jdk/Contents/Home 

但构建失败

失败:构建失败,出现异常。

  • 出了什么问题:无法启动守护进程。这个问题可能是由于守护进程的配置不正确造成的。例如, 使用了无法识别的jvm选项。

据我所知,因为守护程序试图使用MaxPermSize参数JVM选项(未在Java中8+但在Java 8支持的,这只是一个警告)失败。

所以,我试图禁用该守护程序:

mkdir -p ~/.gradle && echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties 

gradle build仍然试图启动一个守护进程......我在项目目录中删除~/.gradle.gradle。任何其他想法?

$ gradle build -Dorg.gradle.daemon=false -Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home 
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/3.2.1/userguide/gradle_daemon.html. 

FAILURE: Build failed with an exception. 

* What went wrong: 
Unable to start the daemon process. 
This problem might be caused by incorrect configuration of the daemon. 
For example, an unrecognized jvm option is used. 
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/3.2.1/userguide/gradle_daemon.html 
Please read the following process output to find out more: 
----------------------- 

FAILURE: Build failed with an exception. 

* What went wrong: 
java.lang.ExceptionInInitializerError (no error message) 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 


* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 
> Starting Daemon% 
+0

是GRADLE_OPTS env变量集?另外GRADLE_USER_HOME变量会影响gradle查找属性文件的位置...? https://docs.gradle.org/current/userguide/gradle_daemon.html – Adam

+0

@Adam这些变量都没有设置 –

好了,所以我想它了,因为我跑我的体型像这样:

gradle build -Dorg.gradle.java.home=~/jdk-9.jdk/Contents/Home 

摇篮已到生成一个新线程使用比一个指向一个不同的Java版本JAVA_HOME。这是通过使用该Java版本产生守护进程线程(即使是false选项)并且失败而完成的。如果我显然将JVM参数传递给构建,也会发生同样的情况。

解决方法是在终端export JAVA_HOME=~/jdk-9.jdk/Contents/Home中设置JAVA_HOME,然后运行gradle build

仍然无法正常工作,因为最新的Java9版本打破了Gradle的反思,但这是一个不同的故事。

我发布这里,因为它太大的评论(但它肯定不是一个答案)。

如果您使用运行脚本--debug您将看到基本错误。我直接通过java-9运行,没有设置JAVA_HOME btw。

我有同样的问题几个JDK-9建立背部和解决它:

set _JAVA_OPTIONS "-Dsun.reflect.debugModuleAccessChecks=true 
      --add-opens=java.base/java.lang=ALL-UNNAMED 
      --add-opens=java.base/java.util=ALL-UNNAMED 
      --add-opens=java.base/java.lang.invoke=ALL-UNNAMED 
      --add-opens=java.base/java.io=ALL-UNNAMED 
      --add-opens=java.base/java.util.concurrent=ALL-UNNAMED 
      --add-opens=java.base/java.text=ALL-UNNAMED" 

设置,而不是出口,因为我使用的鱼,但应该对于bash同样的工作办法。

有趣的是,这仍然失败,构建153本:

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Map java.util.Collections$UnmodifiableMap.m accessible: module java.base does not "opens java.util" to unnamed module @67080771 

但这种情况正在_JAVA_OPTIONS内指定。这可能是构建153上的回归。

+0

嘿@Eugene,我的原始问题是用gradle启动一个守护进程线程,即使我没有指定(这是抱怨一个多余的JVM参数),但事实证明,如果您将'org.gradle.java.home'或'org.gradle.jvmargs'作为'-D'传递,那么gradle就可以这样工作,这是可以预料的。你的答案似乎有助于运行Gradle + Java9,这是我现在有点不同的问题:-) –

+0

@MateuszDymczyk是啊..我知道。我* *的国王预测你最终会遇到同样的问题,我做了 – Eugene

+0

@MateuszDymczyk你还可以运行你的gradle调用btw吗?因为我无法使用我在我的回答/评论 – Eugene