【问题标题】:Gradle — The newly created daemon process has a different context than expectedGradle — 新创建的守护进程具有与预期不同的上下文
【发布时间】:2018-08-01 18:28:51
【问题描述】:

我在 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/

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

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

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

【问题讨论】:

  • 确保您在 gradle.properties 文件中指定了org.gradle.java.home 属性,该文件位于与 build.gradle 相同的目录或 UDER_HOME/.gradle 目录中:stackoverflow.com/a/38212434/2000323 尝试重新启动 PC .还要检查 JAVA_HOME 环境验证设置为什么。尝试将其设置为您用于 Gradle 的 JDK,并删除 org.gradle.java.home 属性重新登录可能需要更改才能生效)。问题也可能是由符号链接引起的。尝试删除 jre 子目录的那个。
  • @Andrey 我在gradle.properties 中尝试了org.gradle.java.home“技巧”——它就在问题本身。另一方面,(a)我确实重新启动,(b)我没有声明和/或设置为环境变量JAVA_HOME,并且(c)删除了jre的链接......但没有任何反应,还是一样的错误。

标签: gradle intellij-idea openjdk nixos nixpkgs


【解决方案1】:

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

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

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

【讨论】:

  • 是的,我也检查过。我实际上在那里使用了正确的。我将用两个屏幕截图更新这个答案。
【解决方案2】:

我发现了这一点,即使它就在我的鼻子前面——我没有仔细阅读错误消息。

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

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

我希望这对将来的其他人或任何其他快速阅读者 Nix'ers 有所帮助。

【讨论】:

    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多