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

Maven打包Jar缺失依赖问题及带依赖运行方案咨询

解决Maven打包Jar不含依赖的运行问题

下面提供几种实用方案,按需选择:

方案一:用Maven Assembly插件打包带依赖的可执行Jar

这是最直接的方式,会把所有依赖打包进同一个Jar里:

  1. 在项目的pom.xml中添加以下插件配置,记得替换<mainClass>里的内容为你的主类全路径(比如com.example.App):
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>你的主类全路径</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 执行打包命令:mvn clean package
  2. 运行生成的Jar(文件名会带-jar-with-dependencies后缀):
java -jar target/slab-1.0-SNAPSHOT-jar-with-dependencies.jar

方案二:用Maven Shade插件构建Fat Jar

Shade插件比Assembly更灵活,能处理依赖冲突、重命名类等场景:

  1. 在pom.xml中添加Shade插件配置,同样替换主类路径:
<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>你的主类全路径</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 执行打包:mvn clean package
  2. 直接运行原文件名的Jar即可(此时它已经包含所有依赖):
java -jar target/slab-1.0-SNAPSHOT.jar

方案三:手动指定依赖到Classpath运行

如果不想打包依赖,可手动把所有依赖Jar加入Classpath:

  1. 先把项目依赖复制到本地目录,执行:
mvn dependency:copy-dependencies -DoutputDirectory=target/dependency
  1. 运行时把主Jar和所有依赖Jar都加入Classpath:
# Linux/Mac系统
java -cp "target/slab-1.0-SNAPSHOT.jar:target/dependency/*" App

# Windows系统,把冒号换成分号
java -cp "target/slab-1.0-SNAPSHOT.jar;target/dependency/*" App

方案四:Spring Boot项目用官方插件打包

如果你的项目是Spring Boot项目,直接用Spring Boot Maven插件打包最省心:

  1. 在pom.xml中添加插件:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 打包后直接运行:
java -jar target/slab-1.0-SNAPSHOT.jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:48:19