2011-07-20 53 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

相關問題