2017-01-30 3 views
2

Ich bin mit Gradle 3.2.1 auf MacOS X 10.12.1 installiert mit brew install gradle ignorieren, keine env Variablen usw. selbst gesetzt haben, die Java 9 EA zu verwenden versuchen:Gradle ignoriert Daemon-Flag

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

Aber der Build schlägt mit

fehlgeschlagen: Build fehlgeschlagen mit einer Ausnahme.

  • Was ist schiefgelaufen: Der Daemon-Prozess konnte nicht gestartet werden. Dieses Problem kann durch eine falsche Konfiguration des Daemon verursacht werden. Zum Beispiel wird eine nicht erkannte jvm-Option verwendet.

Von dem, was ich weiß, es schlägt fehl, weil der Dämon die MaxPermSize JVM-Option zu verwenden, versucht (die nicht in Java unterstützt wird 8+ aber in Java 8 es ist nur eine Warnung). So

Ich habe versucht, den Dämon zu deaktivieren:

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

Aber gradle build noch versucht, einen Dämon zu starten ... Ich entfernte ~/.gradle und .gradle im Projektverzeichnis. Irgendwelche anderen Ideen?

$ 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

Ist die Variable GRADLE_OPTS env festgelegt? Auch die Variable GRADLE_USER_HOME beeinflusst die Position, an der Gradle nach der Eigenschaftendatei sucht ...? https://docs.gradle.org/current/userguide/gradle_daemon.html – Adam

+0

@Adam keine dieser Variablen sind gesetzt –

Antwort

0

Ok, so dachte ich es aus, da ich meine Build wie folgt ausgeführt werden:

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

Gradle hat einen neuen Thread erzeugen eine andere Java-Version zu verwenden, als derjenige, auf den JAVA_HOME. Dies geschieht, indem ein Daemon-Thread (trotz der Option false) mit dieser Java-Version erzeugt wird und fehlschlägt. Das gleiche würde passieren, wenn ich offensichtlich JVM-Argumente an den Build übergeben würde.

Die Lösung besteht darin, stattdessen JAVA_HOME im Terminal export JAVA_HOME=~/jdk-9.jdk/Contents/Home zu setzen und einfach gradle build auszuführen.

Funktioniert immer noch nicht, weil der neueste Java9-Build Gradle's Reflektion gebrochen hat, aber das ist eine andere Geschichte.

0

Ich poste dies hier, weil es zu groß ist (aber es ist sicher keine Antwort). Wenn Sie Ihr Skript mit --debug ausführen, wird der zugrunde liegende Fehler angezeigt. Ich führe das direkt über Java-9 aus, ohne JAVA_HOME zu setzen.

hatte ich das gleiche Problem ein paar jdk-9 zurück und in Angriff genommen mit Builds:

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" 

gesetzt statt Export, weil ich bin mit Fisch, soll aber für bash arbeiten, um die gleichen Weg.

Interessanterweise dies immer noch nicht mit Build 153 mit diesem:

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 

Aber das innerhalb _JAVA_OPTIONS angegeben ist.Dies könnte eine Regression auf Build 153 sein.

+0

Hey @Eugene, mein ursprüngliches Problem war mit Gradle Start eines Daemon-Thread, obwohl ich nicht angegeben (was war sich über einen redundanten JVM-Parameter beschweren), aber wie sich herausstellt, wenn Sie 'org.gradle.java.home' oder' org.gradle.jvmargs' als '-D' übergeben, funktioniert Gradle so und es ist zu erwarten. Ihre Antwort scheint zu helfen, Gradle + Java9 zu starten, was ein bisschen ein anderes Problem ist, das ich jetzt habe :-) –

+0

@MateuszDymczyk yeah .. Ich weiß. Ich * König von * sagte voraus, dass Sie schließlich das gleiche Problem, das ich getan habe, – Eugene

+0

@MateuszDymczyk können Sie immer noch Ihre Grapple Invocation BTW ausführen? Denn ich kann nicht mit den Einstellungen ich zeigte in meiner Antwort/Kommentar – Eugene