GlassFish 6.2.1部署JAX-RS服务时抛出ClassNotFoundException异常求助
解决RESTful Web服务部署失败问题
1. 处理映射冲突警告
- 检查
web.xml与MyApplication类的配置重复问题:如果既通过@ApplicationPath("/api")注解让MyApplication自动注册REST服务,又在web.xml里手动配置了Servlet映射到/api/*,就会触发冲突。 - 二选一即可:要么删除
web.xml中对应的Servlet映射节点,保留MyApplication的注解配置;要么删除MyApplication类,仅保留web.xml里的Servlet配置。
2. 修复ClassNotFoundException错误
这个错误源于依赖版本不匹配或冗余依赖:
- GlassFish 6.x自带适配Jakarta EE 9的Jersey实现,禁止在项目中手动添加Jersey相关依赖(比如
jersey-container-servlet、jakarta.ws.rs-api的非provided版本),避免与服务器自带库冲突。 - 若为Maven项目,调整
pom.xml依赖:引入Jakarta EE BOM统一管理版本,仅添加jakarta.ws.rs-api并设置scope为provided,示例:<dependencyManagement> <dependencies> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-bom</artifactId> <version>9.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <scope>provided</scope> </dependency> </dependencies> - 清理旧部署文件:删除GlassFish安装目录下
domains/domain1/generated和domains/domain1/applications中的旧文件,在NetBeans中执行Clean and Build后重新部署。
3. 额外验证项
- 确认
MyApplication类配置正确:需继承jakarta.ws.rs.core.Application,并通过@ApplicationPath("/api")注解指定路径,示例代码:package com.ayush1.server; import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.core.Application; @ApplicationPath("/api") public class MyApplication extends Application { // 如需手动注册资源类,重写getClasses()方法即可 } - 检查NetBeans服务器配置:确保GlassFish 6.2.1的运行环境绑定为Jakarta EE 9版本,避免环境不匹配。
内容的提问来源于stack exchange,提问作者Ayush
相关产品推荐
相关产品推荐

