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

Apache Maven 3.8.6(JDK-19+Gson2.10)出现NoClassDefFoundError求助

问题原因

NoClassDefFoundError 是因为你通过 java -jar 运行的jar包不包含Gson依赖类,Maven默认的jar打包插件只会打包你自己项目的代码,不会将第三方依赖(比如Gson)打包进去,导致运行时找不到Gson的类。

解决方案

下面提供两种可靠的Maven打包方式,帮你把依赖一起打包进可执行jar:

方式1:使用Maven Assembly插件

  1. 在你的pom.xml中添加Assembly插件配置,放在<build><plugins>节点下:
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <!-- 替换成你包含main方法的类的全路径,比如com.example.GSONExample -->
                <mainClass>你的主类全路径</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  1. 执行打包命令:
mvn -f my-app\pom.xml clean package
  1. 打包完成后,在my-app\target目录下会生成一个名为my-app-1.0-jar-with-dependencies.jar的文件,运行它:
java -jar my-app-1.0-jar-with-dependencies.jar

方式2:使用Maven Shade插件

  1. 在pom.xml中添加Shade插件配置,放在<build><plugins>节点下:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.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>
  1. 执行打包命令:
mvn -f my-app\pom.xml clean package
  1. 直接运行target目录下的my-app-1.0.jar即可,这个jar已经包含了所有依赖:
java -jar my-app-1.0.jar

额外检查

确认你的pom.xml中Gson依赖的scope是默认的compile(不需要手动指定,默认就是compile),不要设为provided或test,否则打包时会排除这个依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10</version>
    <!-- 不要加<scope>provided</scope>或<scope>test</scope> -->
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:35:24