2017-01-30 246 views
2

我在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這些變量都沒有設置 –

回答

0

好了,所以我想它了,因爲我跑我的體型像這樣:

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的反思,但這是一個不同的故事。

0

我發佈這裏,因爲它太大的評論(但它肯定不是一個答案)。

如果您使用運行腳本--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