You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何`mvn spring-boot:run`仅在IntelliJ GUI执行test/deploy后可用?

问题原因分析

1. 终端与IntelliJ使用的JDK版本不一致

你虽然确认了$JAVA_HOME指向Java 21,但终端中Maven实际调用的JDK可能是更低版本:

  • 若刚修改过~/.bashrc或~/.zshrc里的JAVA_HOME配置,但没重启终端或执行source ~/.bashrc(对应你的shell),当前终端会话的环境变量并未生效,Maven会调用系统默认的低版本JDK。
  • Maven全局配置文件(conf/settings.xml)或项目pom.xml中,可能通过maven.compiler.source/maven.compiler.target参数指定了低于21的JDK版本,但IntelliJ会优先使用自身配置的Project SDK(Java 21),不受这些配置影响。

2. IntelliJ执行任务后跳过了编译环节

通过IntelliJ运行test和deploy时,它已经完成了编译并生成了target目录下的有效class文件。此时在终端执行mvn spring-boot:run,Maven会检测到class文件已存在且未过期,直接跳过编译步骤,自然不会触发版本不兼容的错误。

但在终端执行test/deploy时,因终端JDK版本不足导致编译失败,target目录没有可用的class文件,后续spring-boot:run必须重新编译,因此再次抛出版本不支持的错误。

3. Maven的系统绑定JDK问题(次要可能性)

如果你的Maven是通过Linux系统包管理器(如apt、yum)安装的,可能存在默认绑定低版本JDK的情况,即使$JAVA_HOME设为21,Maven实际运行时仍会调用绑定的低版本JDK。


内容的提问来源于stack exchange,提问作者Olivia22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 11:26:08