ClassNotFoundException DispatcherServlet 在启动 Tomcat 时(Maven 依赖项未复制到 wtpwebapps)
我遇到过几次这个问题,只是偶然发现了一个(半)可靠的解决方案,所以我想我会把它贴在这里,以防它对其他人有所帮助,或者万一我忘记了它,并询问是否有人知道根本原因是什么以及为什么我的修复工作。
问题 - 我有一个弹簧3 webapp,我想使用Eclipse中的“在服务器上运行”选项在Tomcat 7服务器上运行。对于某些项目,这只能工作,但有些项目似乎处于中断状态,每次服务器启动时,我都会得到一个找不到的类:org.springframework.web.servlet.DispatcherServlet。
经过一些调查,我发现该项目的 maven 依赖项尚未复制到 inWEB-INF/lib
${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
我尝试了很多事情,最后注意到该项目在“问题”面板中有一个警告:
Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER
will not be exported or published. Runtime ClassNotFoundExceptions may result.
也许我应该早点注意到这一点。
无论如何,选择它并执行“快速修复”可以解决问题,我可以愉快地运行我的项目。快速修复方法是:“将关联的原始类路径条目标记为发布/导出依赖项”。
麻烦的是,虽然这有效,但我不知道它是什么意思。完成后,我看不到项目配置中的任何明显更改。我很想知道实际问题是什么,以及我是否可以避免它再次发生。我还想知道是否有我可以自己做的东西(除了执行快速修复)可以修复它,因为我觉得我几乎尝试了其他所有方法。
感谢您的帮助。