求助:SpringBoot应用在IntelliJ中启动后以退出码0终止的原因排查
排查IntelliJ启动Spring Boot多模块应用直接退出的问题
遇到这种终端启动正常但IDE启动异常的情况,大概率是IntelliJ的配置或者项目同步出了问题,我给你整理几个常见的排查方向,你可以逐一试试:
确认运行配置的模块和主类是否正确
打开IntelliJ的Run/Debug Configurations,检查你用的Spring Boot配置:- 确保"Module"下拉框选的是
application模块(也就是你的Spring Boot主模块) - "Main class"要指定到你那个带
@SpringBootApplication注解的启动类,比如com.example.Application,不要选错成其他模块的类了。如果主类没自动识别,手动输入或者点击右边的按钮选择。
- 确保"Module"下拉框选的是
同步Maven依赖并检查模块引用
有时候IntelliJ的Maven依赖会滞后,右键项目根目录,选择Maven -> Reload Project,等待依赖同步完成。然后检查Application模块的pom.xml,确认已经正确引入了Simple Controller Service模块的依赖,比如:<dependency> <groupId>你的groupId</groupId> <artifactId>simple-controller-service</artifactId> <version>你的版本号</version> </dependency>同时在Maven面板里,确认所有模块都没有红色的警告标识。
检查JDK配置是否和终端一致
终端用的是SapMachine 11,要确保IntelliJ也用的同一个JDK:- 打开
File -> Project Structure -> Project,确认"Project SDK"是SapMachine 11,"Project language level"选11或者对应的值。 - 再到
File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Runner,确保"JRE"选的也是SapMachine 11,不要用IntelliJ默认的JRE。
- 打开
查看控制台和日志输出
虽然进程退出码是0,但可能有隐藏的日志信息:- 在Run/Debug Configurations里,切换到"Logs"标签,勾选"Show console when message is printed in standard output"和"Show console when message is printed in standard error"。
- 也可以把日志级别调低,在启动配置的"VM options"里加上
-Dlogging.level.root=DEBUG,这样启动时会输出更详细的日志,看看有没有加载控制器或者启动过程中的异常。 - 另外,检查IntelliJ的Event Log(右下角的小铃铛图标),有没有关于项目构建、依赖或者启动的提示。
清理IntelliJ缓存和重新导入项目
如果上面的方法都没用,可能是IntelliJ的缓存出问题了:- 关闭项目,删除项目根目录下的
.idea文件夹和所有模块的target文件夹。 - 重新打开IntelliJ,选择"Open"导入项目,让IntelliJ重新生成配置文件。
- 导入后再次执行Maven Reload,然后尝试启动应用。
- 关闭项目,删除项目根目录下的
检查启动类的包扫描范围
虽然终端启动正常,但还是确认下你的启动类@SpringBootApplication注解的扫描范围。如果Simple Controller Service模块的控制器不在启动类所在包的子包下,需要手动指定扫描路径,比如:@SpringBootApplication(scanBasePackages = {"com.example.application", "com.example.simplecontroller"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }不过终端启动正常的话,这个大概率不是问题,但可以作为兜底检查项。
内容的提问来源于stack exchange,提问作者Rômulo Renner Maciel
相关产品推荐
相关产品推荐

