Tomcat 啟動時報錯:
嚴重: The ResourceConfig instance does not contain any root resource classes.
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
...
Servlet /Servlet_Study_1 threw load() exception
此錯誤通常由 Jersey 版本與 web.xml 配置不匹配引起。常見情況:
web.xml 中 init-param 的 jersey.config.server.provider.packages 掃描路徑錯誤或缺失。<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.yourpackage.resource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.yourpackage.resource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
pom.xml 或 lib 目錄下的 jar 包版本號。web.xml 中的 servlet-class 及 init-param 的 param-name。param-value 指向的包下存在帶 @Path 註解的資源類。mvn dependency:tree 排查傳遞性依賴,排除舊版 Jersey 包。原提問者最終確認:「解決了,是 jersey 版本的問題」。將 web.xml 配置調整為與項目實際引用的 Jersey 版本一致後,錯誤消失。

<dependencyManagement> 引入 jersey-bom。Application 子類自動掃描,減少 XML 配置。