Tomcat运行Maven项目遇HTTP 500:jersey-servlet初始化异常求助
嘿,我来帮你搞定这个Tomcat上的Jersey报错问题!你遇到的The ResourceConfig instance does not contain any root resource classes异常,核心原因是你的项目里缺少Jersey的核心依赖包,导致Jersey的Servlet容器没法加载必要的类,自然也扫描不到你写的HelloService资源类。
下面是具体的修复步骤:
1. 给pom.xml补上Jersey核心依赖
你当前的pom只引入了JavaEE API、JUnit和Servlet API,但完全没加Jersey的核心库——而你用的是Jersey 1.x(包前缀是com.sun.jersey),必须添加对应的依赖才能让Jersey正常工作。把下面这段依赖加到你的<dependencies>节点里:
<!-- Jersey 1.x核心依赖 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.19.4</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.19.4</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.19.4</version> </dependency>
版本选1.19.4是因为它是1.x分支里比较稳定的版本,你也可以换成其他1.x版本,但要确保三个依赖的版本完全一致。
2. 修正web.xml里的拼写小问题
我注意到你web.xml里的servlet-name写成了jersey-serlvet(少了个字母v),虽然现在servlet和映射的名称是一致的,暂时不会影响功能,但为了规范和避免后续踩坑,建议改成正确的jersey-servlet:
<servlet> <servlet-name>jersey-servlet</servlet-name> <!-- 其他配置不变 --> </servlet> <servlet-mapping> <servlet-name>jersey-servlet</servlet-name> <!-- 其他配置不变 --> </servlet-mapping>
3. 重新构建部署
修改完后,执行mvn clean package重新打包项目,把新生成的war包放到Tomcat的webapps目录下,启动Tomcat后试试访问接口:
- 访问
http://localhost:8080/RestWs/hello应该返回Welcome to WebService - 访问
http://localhost:8080/RestWs/hello/Java应该返回Jersey say : Java
对了,你的HelloService包名com.mysterious和web.xml里配置的扫描包是一致的,这部分完全没问题,不用改。
内容的提问来源于stack exchange,提问作者user6021893

