Tomcat 10.1部署应用遇NoClassDefFoundError,求pom.xml排查方案
解决Tomcat 10.1部署Jakarta EE 10应用时的
java.lang.NoClassDefFoundError: jakarta/ws/rs/core/EntityPart错误 问题原因
Tomcat 10.1 是Servlet容器,仅提供Servlet、JSP、EL等Web Profile核心组件支持,不包含Jakarta RESTful Web Services(JAX-RS)的实现。jakarta.ws.rs.core.EntityPart是Jakarta EE 10对应的JAX-RS 3.1规范类,运行时找不到该类,说明项目缺少JAX-RS的API或实现依赖,且未将这些依赖打包到应用中。
排查与修复步骤
1. 补全pom.xml中的JAX-RS依赖
需要同时引入Jakarta REST API和一个JAX-RS实现(如RESTEasy或Jersey),版本需与Jakarta EE 10匹配(JAX-RS 3.1.x)。
示例:使用RESTEasy作为JAX-RS实现
添加以下依赖到pom.xml:
<!-- Jakarta REST API (JAX-RS 3.1) --> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <version>3.1.0</version> </dependency> <!-- RESTEasy JAX-RS核心实现 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>6.2.7.Final</version> </dependency> <!-- RESTEasy Servlet初始化适配器,适配Tomcat环境 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-servlet-initializer</artifactId> <version>6.2.7.Final</version> </dependency>
示例:使用Jersey作为JAX-RS实现
添加以下依赖到pom.xml:
<!-- Jakarta REST API (JAX-RS 3.1) --> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <version>3.1.0</version> </dependency> <!-- Jersey Servlet容器适配器 --> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>3.1.3</version> </dependency> <!-- 可选:Jersey JSON绑定支持(若应用需处理JSON) --> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-binding</artifactId> <version>3.1.3</version> </dependency>
2. 检查依赖scope设置
确保JAX-RS相关依赖的scope未设为provided——Tomcat不提供JAX-RS类,默认的compile scope会将依赖打包到war包的WEB-INF/lib目录,这是正确配置。
3. 验证war包依赖打包情况
执行mvn package生成war包后,解压查看WEB-INF/lib目录,确认包含:
jakarta.ws.rs-api-*.jar- 对应实现的JAR包(如
resteasy-jaxrs-*.jar或jersey-container-servlet-*.jar)
若缺少这些JAR,检查maven打包配置(确保<packaging>war</packaging>已声明),或是否存在依赖排除规则导致依赖未被引入。
4. 确认Java版本兼容性
你使用的Java 11与JAX-RS 3.1、RESTEasy 6.x、Jersey 3.x均兼容,无需调整版本。
内容的提问来源于stack exchange,提问作者Punyawee Srithongkerd
相关产品推荐
相关产品推荐

