Exception in thread “main“ java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplicatio

你遇到的错误 NoClassDefFoundError: org/springframework/boot/SpringApplication 表明 Spring Boot 的核心类未被正确加载到运行时环境中。以下是逐步解决方案:

  1. 检查 Maven 打包配置
    确保 pom.xml 中正确配置了 Spring Boot 的 Maven 插件,且插件未被禁用。以下为关键配置:

xml
复制代码




org.springframework.boot
spring-boot-maven-plugin
3.1.0

com.yunhe.WarehouseSystemApp




repackage





  1. 重新打包项目
    执行以下命令重新打包,确保插件生效:

bash
复制代码
mvn clean package

注意:不要加 -DskipTests 或 -Dmaven.test.skip,避免因测试失败导致打包异常。
检查 target 目录下生成的 Jar 文件是否为 Spring Boot 的 Fat Jar(通常比普通 Jar 大)。
3. 验证 Jar 内容
检查 Jar 包内是否包含 Spring Boot 的类:

bash
复制代码
jar tf wmspro-1.0-SNAPSHOT.jar | grep SpringApplication

如果输出包含 org/springframework/boot/SpringApplication.class,说明依赖已打包。
如果未找到,说明依赖未被正确打包,需检查 pom.xml 的依赖范围(例如 compile vs runtime)。
4. 直接运行 Spring Boot Jar
Spring Boot 的 Fat Jar 内置了所有依赖,直接运行即可:

bash
复制代码
java -jar target/wmspro-1.0-SNAPSHOT.jar

  1. 常见错误排查
    情况 1:依赖未打包
    检查 pom.xml 中 Spring Boot 依赖的版本是否与插件版本一致。
    确保所有依赖的 scope 是 compile 或 runtime,而非 provided。
    情况 2:手动修改了 Jar
    如果手动删除或修改了 Jar 内容,会导致依赖丢失。必须通过 spring-boot-maven-plugin 重新打包。
    情况 3:IDE 缓存问题
    尝试清理 IDE 缓存(如 IntelliJ 的 File -> Invalidate Caches / Restart)后重新打包。
  2. 替代方案:使用 Maven 依赖管理
    如果仍无法解决,可临时通过 Maven 的依赖参数运行:

bash
复制代码
mvn spring-boot:run

此命令会通过 Maven 自动下载依赖并运行项目,绕过手动打包的 Jar 问题。

总结
该错误通常是因为 Spring Boot 的依赖未被正确打包到 Jar 中。通过确保 spring-boot-maven-plugin 正确配置并重新打包,可以生成包含所有依赖的 Fat Jar,解决 NoClassDefFoundError 问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值