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

Tomcat运行Maven项目遇HTTP 500:jersey-servlet初始化异常求助

解决Jersey启动时ResourceConfig无资源类的问题

嘿,我来帮你搞定这个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:47:39