IntelliJ IDEA执行Git操作提示无法定位Java Runtime如何解决
IntelliJ IDEA执行Git操作提示找不到Java Runtime故障排查
问题现象
在IntelliJ IDEA中执行任意Git操作(提交、拉取、推送等)时,抛出如下报错:
0 file committed, 11 files failed to commit: Documentation updates, error message updates The operation couldn’t be completed. Unable to locate a Java Runtime. Please visit http://www.java.com for information on installing Java.
故障反常特征
- IDE核心功能全部正常:代码补全、Maven任务执行、单元测试运行均无异常,证明IntelliJ本体已经正确识别并绑定了可用的Java Runtime
- 系统原生终端下执行所有Git命令可正常运行,从终端启动IntelliJ时,IDE内的Git操作也可正常执行
当前运行环境
IntelliJ IDEA 2020.3.3 (Community Edition) Build #IC-203.7717.56, built on March 15, 2021 Runtime version: 11.0.10+8-b1145.96 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 10.16 GC: ParNew, ConcurrentMarkSweep Memory: 1979M Cores: 12
问题根因
该故障是macOS平台启动机制+旧版IntelliJ Git插件缺陷共同导致:
- macOS从启动台、Dock栏直接启动GUI应用时,不会加载用户shell配置文件(
.zshrc、.bash_profile等)中设置的JAVA_HOME等自定义环境变量 - IntelliJ 2020.3.x版本的Git插件存在逻辑漏洞:调用Git相关子进程时,不会把IDE自身运行使用的内置JDK路径传递给子进程
- 执行Git操作时通常会触发依赖Java运行时的逻辑(最常见为项目配置的Git提交钩子、Git相关扩展插件),子进程扫描不到可用的Java路径就会抛出报错
- 其余功能不受影响的原因:代码补全、Maven执行、单元测试均运行在IDE自身的JVM进程内,直接调用IDE内置的JDK即可,不需要额外查找外部Java环境;从终端启动IDE时会自动继承shell中配置的所有环境变量,因此也不会触发该问题。
可行解决方案
按操作成本从低到高排序:
- 临时规避方案:不要从Dock/启动台点击图标启动IntelliJ,每次通过终端执行
idea命令(IntelliJ安装后可配置的命令行启动入口)启动IDE,Git子进程会自动继承终端的环境变量,不会出现找不到Java Runtime的报错。 - 钩子定向修复:打开项目根目录下的
.git/hooks文件夹,检查pre-commit、commit-msg等钩子脚本,将脚本中依赖Java的路径改为本机JDK的绝对路径,不需要修改全局配置即可解决当前项目的报错。 - 全局环境变量修复:在终端执行
/usr/libexec/java_home获取本机JDK的完整安装路径,在~/Library/LaunchAgents/目录下新建全局环境变量配置文件,将JAVA_HOME配置为拿到的JDK路径,注销系统重新登录后,所有GUI启动的应用都可以正常读取到Java路径,一劳永逸解决该问题。 - 版本升级修复:该Git插件的环境变量传递缺陷在2021.1及之后的IntelliJ正式版本中已经完成修复,升级到稳定新版后,Git插件会自动将IDE内置JDK的路径注入所有调用的子进程环境,不需要额外做任何配置。
内容的提问来源于stack exchange,提问作者Evil Washing Machine
相关产品推荐
相关产品推荐

