ClassNotFoundException启动Tomcat时的DispatcherServlet(Maven依赖项未复制到wtpwebapps)
我已经遇到过这个问题几次而且只是偶然发现了一个(半)可靠的解决方案,所以我想在这里发布它以防万一它可以帮助其他人,或者万一我忘了它,还要问是否有人知道根本原因是什么以及为什么我的修复工作。
问题 – 我有一个spring 3 webapp,我想在Eclipse中使用Run on Server选项在Tomcat 7服务器上运行。 对于一些项目,这只是有效,但有些似乎处于破碎状态,每次服务器启动时,我都会找到一个未找到的类:org.springframework.web.servlet.DispatcherServlet。
经过一番调查后,我发现该项目的maven依赖项尚未复制到${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
WEB-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.
也许我应该早点注意到这一点。
无论如何,选择这个并执行“快速修复”可以解决问题,我可以愉快地运行我的项目。 快速解决方法是:“将关联的原始类路径条目标记为发布/导出依赖项”。
麻烦的是,虽然这有效,但我不知道这意味着什么。 完成后,我的项目配置中看不到任何明显的变化。 我很想知道实际问题是什么,以及我是否可以避免它再次发生。 我还想知道是否有一些我自己可以完成的事情(除了执行快速修复之外)可以修复它,因为我觉得我几乎尝试了其他一切。
谢谢你的帮助。
查看项目属性下的“部署程序集”部分。 此页面的内容指定如何将项目组装到正在运行的应用程序中。 特别是,您可以在此处控制项目引用的库中的哪些库。 选择Add – > Java Build Path Entries。 您将能够在现有的构建路径条目中进行选择以包含在程序集中。
你找到的快速修复程序对你做了同样的事情。 如果您对封底下发生的事情感到好奇,请在快速修复之前和之后查看您的.classpath文件。 快速修复使用一些程序集信息标记类路径条目。
检查.class文件并替换以下条目
** **
与下面: –
** **
它对我有用。
看来,你必须另外安装Maven Integration for WTP插件。 它的描述可以在issues.sonatype.org找到。
我今天在一个已经工作了很长时间的项目中遇到了这个问题。 我尝试了上述所有解决方案,但(1)我没有在问题面板中看到海报的警告; (2)我的部署程序集Java构建路径条目没有显示可供部署的任何其他内容; (3)org.eclipse.jst.component.dependency的.classpath条目已经存在; (4)我已经安装了Maven Integration for WTP。 我最终从Tomcat服务器上删除了我的项目,然后重新部署它,问题就消失了。
- 为什么我得到Class not found例外
- Java无法找到主类
- 尝试使用Java连接到SQL Server 2005时出现ClassNotFoundException
- 未在Web服务器中运行时,库中的Java重载方法失败
- ProGuard打破了JavaFX应用程序
- 用于eclipse的tomcat中的servlet的java.lang.ClassNotFoundException
- 调试ClassNotFoundException
- 如何解决此错误引起:java.lang.ClassNotFoundException
- java.lang.ClassNotFoundException:com.microsoft.jdbc.sqlserver.SQLServerDriver:我加载了正确的驱动程序吗?