Gradle - 新创建的守护程序进程具有与预期不同的上下文

时间:2018-02-22 01:51:52

标签: gradle intellij-idea openjdk nixos nixpkgs

我在Ubuntu(Linux uplink 4.13.0-32-generic #35~16.04.1-Ubuntu SMP Thu Jan 25 10:13:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux)中通过Nix安装了OpenJDK。

gorre@uplink:~$ java -version
openjdk version "1.8.0_172"
OpenJDK Runtime Environment (build 1.8.0_172-02)
OpenJDK 64-Bit Server VM (build 25.172-b02, mixed mode)

gorre@uplink:~$ which java
/home/gorre/.nix-profile/bin/java

gorre@uplink:/nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02$ ll
total 24K
dr-xr-xr-x 3 gorre 4.0K Dec 31  1969 share/
dr-xr-xr-x 2 gorre 4.0K Dec 31  1969 nix-support/
dr-xr-xr-x 3 gorre 4.0K Dec 31  1969 lib/
lrwxrwxrwx 1 gorre   80 Dec 31  1969 jre -> /nix/store/n7rh8v269qb1fs6314yq0wg7q8cajw0g-openjdk-8u172b02-jre/lib/openjdk/jre/
dr-xr-xr-x 2 gorre 4.0K Dec 31  1969 include/
lrwxrwxrwx 1 gorre   76 Dec 31  1969 bin -> /nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02/lib/openjdk/bin/

现在,当我尝试在Gradle 4.4内构建/运行使用IntelliJ IDEA 2017.3.4 (Ultimate Edition) Build #IU-173.4548.28的项目时,我收到此错误:

The newly created daemon process has a different context than expected.
It won't be possible to reconnect to this daemon. Context mismatch: 
Java home is different.
Wanted: DefaultDaemonContext[uid=null,javaHome=/nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02,daemonRegistryDir=/home/gorre/.gradle/daemon,pid=12824,idleTimeout=null,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]
Actual: DefaultDaemonContext[uid=b813ba02-e4a6-4bfe-91b2-8ed32963f7cc,javaHome=/nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02/lib/openjdk,daemonRegistryDir=/home/gorre/.gradle/daemon,pid=14245,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]

我在这里和那里搜索过但其他答案/解决方案都不起作用,甚至没有在gradle.properties中指定Java主页(在项目内部或我用户的家中) ):

org.gradle.java.home = /nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02

另一方面,如果我在终端上构建/运行项目,它可以正常工作。有线索吗?

更新#1

这是我在Gradle和IntelliJ IDEA中的SDK的配置:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

检查Gradle守护程序的Idea设置:

Build, Execution, Deployment -> Build Tools -> Gradle.

有一个选项“Gradle JVM”。看起来Idea使用Java 9或其他一些不兼容的JVM来运行Gradle。 Yoy应该从Nix中选择你的Java版本。

答案 1 :(得分:1)

我想出来了,即使它在我的鼻子前面 - 我没有仔细阅读错误信息。

基本上,Nix设置的default Java home位于:/nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02/lib/openjdk,而我在IntelliJ IDEA中手动设置的那个位于:/nix/store/f9053w1lfrkhgqfpr6l82ssxmjpsni1j-openjdk-8u172b02(注意缺少的../lib/openjdk段)。

在IntelliJ IDEA中纠正后,一切正常。我不需要任何额外的和/或特殊的。

我希望这可以帮助将来的其他人 - 或任何其他快速阅读器Nix'。