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

Maven导入Gson后JSP/Servlet Web部署出现NoClassDefFoundError求助

解决java.lang.NoClassDefFoundError: com/google/gson/Gson问题

这个错误在JSP/Servlet Web项目里非常常见,核心原因是Gson的依赖jar包没有被部署到Tomcat的运行环境中——虽然你已经在pom.xml里声明了Gson依赖,但Maven并没有把它打包到Web项目的WEB-INF/lib目录下,导致Tomcat运行时找不到对应的类。

下面是具体的排查和解决步骤:

1. 确认项目打包方式

你的pom.xml里没有指定<packaging>标签,Maven默认会打成jar包,但Web项目需要打成war包才能正确将依赖纳入WEB-INF/lib。在pom.xml的<version>标签后添加:

<packaging>war</packaging>

2. 优化重复的JUnit依赖

注意到你的pom.xml里重复声明了JUnit依赖,这可能导致不必要的冲突,建议保留其中一个即可,比如只保留测试范围的:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.4.0</version>
    <scope>test</scope>
</dependency>

3. 确保Maven打包时复制依赖到WEB-INF/lib

如果打包后war包的WEB-INF/lib里还是没有Gson的jar,可以显式配置maven-war-plugin来强制复制依赖。在pom.xml里添加<build>节点:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.3.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${project.build.directory}/dependency</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

之后执行mvn clean install重新打包项目。

4. 检查IDE的部署配置

如果用IDE(比如IDEA/Eclipse)直接部署到Tomcat,需要确认部署配置里包含了Maven依赖:

  • IDEA:打开File > Project Structure > Artifacts,选中你的war包,确保WEB-INF/lib下存在gson-2.8.5.jar,如果没有,点击+选择Library Files添加Gson依赖。
  • Eclipse:右键项目选择Properties > Deployment Assembly,确认Maven Dependencies在部署列表中,若没有则点击Add > Maven Dependencies添加。

5. 清理并重新部署

最后执行以下操作确保环境干净:

  • 执行mvn clean清理旧的构建文件
  • 重新执行mvn install打包项目
  • 重启Tomcat并重新部署war包

这样就能解决Tomcat运行时找不到Gson类的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:22:42