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

如何修复SpringBoot项目J2EE Bad Practices: Leftover Debug Code主方法报错

SpringBoot静态代码检查J2EE Bad Practices: Leftover Debug Code问题解决方案

报错触发原因

该规则由SpotBugs/Sonar等静态检查工具提供,默认认为生产部署的J2EE项目不需要业务代码中手写main方法作为调试入口,识别到非标准入口的main方法就会抛出该错误。

保留main方法同时消除错误的可行方案

针对ApiApplication、WebApplication等SpringBoot启动类的main方法

  • 方案1:添加注解忽略检查
    在main方法上添加@SuppressWarnings注解忽略对应规则,示例代码:
    @SuppressWarnings("unused")
    public static void main(String[] args) throws Exception {
        SpringApplication.run(ApiApplication.class, args);
    }
    
    若使用SonarQube检查,也可以直接在方法行末尾加// NOSONAR跳过该行规则校验。
  • 方案2:全局配置排除规则
    在静态检查工具的配置文件中添加对应类的排除规则,比如SpotBugs的excludeFilter.xml、Sonar的sonar.exclusions配置项,直接跳过对这两个启动类的该规则校验。

针对IBanTest测试类的main方法

  • 优先方案:将IBanTest.java从src/main/java目录移动到src/test/java目录下,静态检查工具默认不会对测试目录下的main方法触发该规则,同时也符合Java项目测试代码的存放规范。
  • 若必须保留在src/main目录下,和启动类方案一致,给main方法加忽略注解即可。

完全删除所有main方法的影响

  • 父项目打包运行场景:无任何影响。SpringBoot打包插件会自动扫描标注了@SpringBootApplication的启动类,自动生成启动入口,不需要依赖手写的main方法。
  • 子项目单独启动场景:会启动失败。IDE直接运行子项目、或在子项目目录执行mvn spring-boot:run命令时,需要找到对应的main方法作为入口,删除后会找不到启动类。
  • IBanTest的main方法删除无业务影响,仅会导致你无法直接运行该类触发Selenium测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:18:03