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

启动Spring Boot Jar应用时遭遇NoClassDefFoundError异常求助

解决Spring Boot Jar运行时NoClassDefFoundError问题

嘿,这个问题我之前帮同事排查过好几次,核心原因基本都是打包过程没正确把Spring Boot依赖包打进可执行Jar里,或者插件配置出了问题。给你几个一步步的排查和解决办法:

1. 先检查Maven插件配置是否正确

确保你的pom.xml里已经正确引入了Spring Boot Maven插件,并且配置了repackage目标——这是生成可执行Jar的关键。正确的配置应该是这样的:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <!-- 如果主类没自动识别到,可以手动指定 -->
            <configuration>
                <mainClass>com.database.DatabaseApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

如果没加repackage目标,Maven只会生成普通Jar,不会把依赖包打包进去,自然找不到SpringApplication类。

2. 用正确的命令重新打包

别用mvn jar:jar这种普通打包命令,一定要用:

mvn clean package

或者

mvn clean install

这两个命令会触发Spring Boot插件的repackage流程,生成包含所有依赖的可执行Jar。

3. 验证Jar包的内容结构

打包完成后,你可以用命令查看Jar里的内容:

jar tf App.jar

看看有没有BOOT-INF/lib目录,里面应该包含所有Spring Boot相关的依赖Jar(比如spring-boot-*.jar)。如果这个目录不存在,说明打包失败了。

4. 确认主类配置没问题

要么你的主类com.database.DatabaseApplication上已经加了@SpringBootApplication注解(Spring Boot插件会自动识别这个注解的类作为主类),要么就在插件配置里手动指定了mainClass,两者选其一就行。

补充说明

Spring Boot的可执行Jar有特殊的目录结构:BOOT-INF/classes放你的代码,BOOT-INF/lib放所有依赖,还有专门的启动器类来加载这些内容。如果是普通Jar,没有这个结构,运行java -jar的时候就找不到依赖类,就会报你遇到的NoClassDefFoundError/ClassNotFoundException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:24:18