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

Jersey项目ResourceConfig依赖异常:Tomcat运行时类找不到

问题分析与解决方案

这问题我之前也碰到过!核心原因其实是项目B的编译产物没有被正确打包到项目A的Tomcat部署包中——虽然Eclipse里构建路径配置好了,但部署时没把类复制过去,导致运行时JVM找不到com.project.b.SomeClassToRegister。下面给你几个针对性的排查和解决步骤:

1. 先确认Tomcat部署目录里有没有项目B的类

直接去你的Tomcat安装目录下的webapps/[你的项目A名称]/WEB-INF/classes或者WEB-INF/lib里查找,看看是否存在com/project/b/SomeClassToRegister.class这个文件。如果没有,就直接证明部署时没把项目B的类包含进去,这时候重点看Eclipse的部署配置。

2. 检查Eclipse的Deployment Assembly配置细节

右键项目A → 「Properties」→ 「Deployment Assembly」,找到项目B的那条条目:

  • 确认「Source」列是项目B的编译输出目录(比如默认是com.project.b/bin或者com.project.b/target/classes,取决于你的项目设置),别选成源码目录了
  • 确认「Deploy Path」列是WEB-INF/classes(如果是把项目B的类直接复制到项目A的classes目录);如果项目B是打包成jar的方式依赖,那Deploy Path应该是WEB-INF/lib,同时要确保项目B已经被正确导出为jar包

3. 手动编译项目B再重新部署

有时候Eclipse的自动编译会抽风,尤其是多项目依赖场景下:

  1. 右键项目B → 「Project」→ 「Build Project」,等待编译完成
  2. 右键项目A → 「Run As」→ 「Clean Tomcat Work Directory」
  3. 重新启动Tomcat部署项目A

4. 如果用了构建工具,检查依赖配置和同步

要是你的项目用Maven/Gradle管理:

  • Maven:确认项目A的pom.xml里已添加项目B的依赖,且<scope>是默认的compile(别设成provided或test,这俩会导致打包时不包含依赖)。执行mvn clean install重新构建后,右键项目A → 「Maven」→ 「Update Project」同步配置。
  • Gradle:确认项目A的build.gradle里依赖项目B的方式是implementation project(':com.project.b'),执行gradle clean build后同步Gradle项目。

5. 额外优化:去掉重复的类注册

你第30行已经用packages("com.project.b")扫描了整个包,如果SomeClassToRegister是Jersey会自动注册的类(比如带@Path的资源类、@Provider的提供者类),完全不需要手动调用register()方法。这不仅能避免类加载顺序的潜在问题,还能简化代码。

内容的提问来源于stack exchange,提问作者buzoherbert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:09:44