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

Eclipse部署Project A到Tomcat9时出现Project B类找不到错误求助

解决Tomcat部署时依赖项目类找不到的问题(NoClassDefFoundError)

我之前也碰到过完全一样的坑——用Eclipse里的项目依赖代替打包好的jar时,Tomcat经常会“漏掉”把依赖项目的类文件部署进去。结合你遇到的java.lang.NoClassDefFoundError错误,给你几个针对性的解决步骤:

1. 检查Deployment Assembly配置(最关键)

这是90%以上这类问题的根源。操作步骤:

  • 右键点击Project A → 选择Properties
  • 在弹出的窗口里找到Deployment Assembly选项卡
  • 看看列表里有没有包含Project B:
    • 如果没有,点击Add → 选择Project → 选中Project B → 确认添加
      这个配置的作用就是告诉Eclipse:部署Project A的时候,要把Project B的编译产物一起打包到Tomcat的部署目录里。

2. 验证Project B的编译状态

有时候Project B本身编译失败了,但你没留意,自然生成不了需要的class文件:

  • 右键Project B → 选择Project → Clean,先清理旧的编译文件
  • 然后重新编译:Project → Build Project
  • 去Project B的bin目录(或者你自定义的输出目录)里,确认有没有那个找不到的className.class文件

3. 手动检查Tomcat部署目录

去你的Tomcat安装目录下的webapps文件夹,找到Project A的部署文件夹,打开WEB-INF目录:

  • 如果是项目依赖,正常情况下应该能在classes目录里看到Project B的类文件,或者如果Project B是打包成jar的话会在lib目录里
  • 如果没有,说明Eclipse的部署流程没把依赖项传过去,回到第一步重新配置Deployment Assembly

4. 确认构建路径的依赖范围

右键Project A → Properties → Java Build Path → Projects选项卡:

  • 选中Project B,点击Edit
  • 检查依赖范围是不是Compile(默认应该是这个),别选成Provided或者其他,否则部署时不会把依赖项包含进去

附你提供的错误日志:

Mar 23, 2018 9:37:07 AM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: className
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:490)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:45:53