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

Maven打包后运行jar报NoClassDefFoundError,如何将依赖打入jar包

报错原因

你遇到的NoClassDefFoundError确实是依赖缺失导致的。Maven默认执行mvn clean package生成的jar包仅包含当前项目的编译产物,不会自动把项目依赖的第三方jar包整合进去,运行时JVM找不到对应依赖的类就会抛出该异常。

解决方案

推荐两种常用的打包带依赖的可执行jar的方式,二选一即可:

方式一:使用maven-assembly-plugin

这个插件支持把所有依赖和项目代码打包成一个完整的可执行jar,配置步骤如下:

  1. 在你的项目pom.xml的build -> plugins节点下添加以下配置:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <archive>
            <manifest>
                <!-- 这里替换成你自己的主类全路径,就是包含main方法的那个类 -->
                <mainClass>Create_pass_criteria.Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  1. 重新执行打包命令:mvn clean package
  2. 打包完成后target目录下会生成文件名带jar-with-dependencies后缀的jar包,运行这个jar即可:
    java -jar create_pass_criteria-1.0-SNAPSHOT-jar-with-dependencies.jar

方式二:使用maven-shade-plugin

如果你的项目有依赖冲突、需要合并资源文件的场景,推荐用这个插件,配置如下:

  1. 在pom.xml的build -> plugins节点下添加配置:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <!-- 替换成你自己的主类全路径 -->
                        <mainClass>Create_pass_criteria.Main</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 重新执行mvn clean package,直接运行target目录下生成的普通jar包即可,不需要带额外后缀。
注意事项
  • 配置中的主类全路径不要写错,要和你实际项目里的主类路径完全一致
  • 如果打包后还是提示类找不到,先检查你pom.xml里的依赖是否已经正确添加了缺失的com.mprv.automation相关依赖,scope不要设置成provided,否则不会被打包进去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:24:04