2011-07-20 52 views
2

我得到的是:的NoClassDefFoundError当运行Tomcat +弹簧+ Maven项目(Eclipse中)

java.lang.NoClassDefFoundError: com/mongodb/DB 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 
at java.lang.Class.getDeclaredMethods(Class.java:1791) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:446) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:430) 
at org.springframework.util.ReflectionUtils.getAllDeclaredMethods(ReflectionUtils.java:475) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:634) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:573) 
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1319) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:315) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:394) 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:594) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

这个类是行家罐内(从M2存储库)。我将Maven Dependencies添加到了DeploymentAssembly(之前我做到了:java.lang.ClassNotFoundException:org.springframework.web.filter.CharacterEncodingFilter)。我使用m2e插件并将我的项目配置为Maven项目。我的应用程序部署到标准位置/.metadata/.plugins/.../tmp0。在WEB-INF/lib里面我有所有必需的罐子。项目编译没有错误。我能做什么错?

一个准的解决方案是必要的库添加到Tomcat的lib目录,但我不想这样做。我想强制Tomcat使用项目库。

+0

我想你错过了一个lib是没有必要的编译,但在运行时。请检查您的WEB-INF/lib目录中是否有用于mongodb的lib。 – flash

+0

存在于.../tmp0/wtpwebapps/myproject/WEB-INF/lib中的mongo-java.driver-2.5.2.jar包含com.mongo.DB类。该类在编译时也是需要的。是否有可能需要另一个jar或另一个jar版本的com.mongo.DB?当我将这个jar添加到Tomcat的lib目录时,它工作正常(我得到另一个缺少的类错误) – jasiustasiu

回答

0

它看起来像您没有安装m2eclipse的WTP一体化。

如果是的话,比这个可我错了部署的来源。安装WTP集成时您不需要在部署描述符中更改任何东西 - 插件应自动配置您的项目。如果没有,请尝试人民币 - > Maven - >更新项目配置,但一定要先安装WTP集成。

6

我有当试图运行MCV-AJAXMVC-基本样品,与春3(既可以在https://src.springframework.org/svn/spring-samples分布类似的问题 - 需要一个SVN客户端下载它们,像TortoiseSVN的)。

我在我的Tomcat6启动日志,收到此ClassNotFoundException的。

SEVERE: Exception starting filter characterEncodingFilter java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269) 
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4071) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Feb 17, 2012 10:36:18 AM org.apache.catalina.core.StandardContext start 
SEVERE: Error filterStart 
Feb 17, 2012 10:36:18 AM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/mvc-basic] startup failed due to previous errors 

我可以同时运行Maven的清洁和Maven安装目标,没有任何错误,该项目没有任何类路径错误。 我还安装了Eclipse Maven的集成WTPMaven的集成Eclipse的额外封装的指示,here,但仍没有运气...

在我的情况的问题,可以在看到标记选项卡在Eclipse中,作为警告(黄色eclamation标记)与类路径依赖的验证信息 的描述和类路径条目org.eclipse.maven2_classpath.container的实际问题将不得出口或出版。可能会导致运行时ClassNotFoundExceptions。

为了解决这个问题,对这个问题的描述

  1. 单击鼠标右键,选择和快速修复。
  2. 选择标记相关的原始类路径条目发布/对出口的依赖
  3. 单击完成
  4. 做一个行家清洁Maven的安装
  5. 右键单击项目,选择在服务器上运行。选择运行的Tomcat服务器,您应该看到最初的页面。

结论 上述步骤,以使该项目成功运行在我Eclispe的开发环境为我工作。请试试看它是否适合你。

另一种解决方案也似乎工作,是

  1. 从日食删除项目,包括在工作区中的所有相关文件。 (从工作空间中删除项目目录以及)
  2. 从SVN再次检查项目进行到工作区
  3. 导入新项目在Eclipse中,但选择的Maven \现有Maven项目
  4. 选择从磁盘和进口项目。

亲切的问候,

ta6hbe

相关问题