一、构建错误
使用 JetBrains 远程开发时,启动 Java8 版本的 SpringBoot 项目失败,错误示例如下
1 | java: Cannot run program "/home/<redacted>/.jdks/corretto-1.8.0_352/bin/java" (in directory "/local/home/<redacted>/.cache/JetBrains/RemoteDev-IU/<redacted>/compile-server"): error=0, Failed to exec spawn helper: pid: 31592, exit value: 1 |
二、问题原因
这是因为项目当前使用的 JDK 版本过低,Jetbrains Gateway 的 IDE 默认构建启动过程中,使用到了 JDK 包中的 jspawnhelper 可执行文件。而 JDK8 由于版本低,未提供该工具。经实际测试,在 OracleJDK 17 和 18 版本中存在该文件。具体可以进入 JDK 包的 lib 或 jre/lib 目录中检查 jspawnhelper 是否存在。
三、解决方式
1. 等待官方修复
可以看 Jetbrains 后续是否会修复这个问题,使得构建过程可以根据 JDK 版本自动避免这个错误
2. 配置使用旧的构建方式
打开 IDE 的设置窗口,在 Build, Execution, Deployment > Compiler
中的 Shared build process VM options
的选项输入框中添加 VM Options 如下: -Djdk.lang.Process.launchMechanism=vfork
。编辑完成后,保存应用即可将 JDK 配置为使用旧的启动机制。
参考错误: 前往