4

我試圖配置org.apache.commons.dbcp.BasicDataSource作爲bean在web.xml下使用tomcat 6和postgresql的tomcat項目 9.1 java.lang.NoClassDefFoundError:org/apache/commons/pool/impl/GenericObjectPool

我servletdispacher.xml

`

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:prefix="/WEB-INF/jsp/" 
     p:suffix=".jsp" /> 




<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 
    <property name="url" value="jdbc:postgresql://localhost:5432/car" /> 
    <property name="username" value="postgres" /> 
    <property name="password" value="123" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="annotatedClasses"> 
     <list> 
      <value>DAOModel.Tblusers</value> 
     </list> 
    </property> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="DAOModel.Tblusers" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

` 和錯誤,得到:

javax.servlet.ServletException: Servlet.init() for servlet dispatcher threw exception 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
java.lang.Thread.run(Thread.java:724) 

回答

2

這發生在我對於Mint 15上的tomcat6軟件包。安裝有/usr/share/tomcat6/lib/commons-pool.jar -> ../../java/commons-pool.jar,但/usr/share/java/commons-pool.jar -> commons-pool-1.5.6.jar被破壞。從我當地的Maven倉庫複製sudo cp ~/.m2/repository/commons-pool/commons-pool/1.5.6/commons-pool-1.5.6.jar /usr/share/java爲我修復它。

5

看來「公共池」罐子沒有被部署。如果您使用的是eclipse,那麼您可以通過轉到項目的屬性來檢查部署了哪些jar,然後單擊Deployment Assembly。

+0

我使用NetBeans並存在commons-pool2-2.1.jar在web-inf \ lib – ATJVS

+0

好吧,我可能是錯的。但是,您的問題標題(NoClassDefinitionFound)中的這個錯誤意味着在您的部署中的所有JAR中,它們都沒有「org.apache.commons.pool.impl.GenericObjectPool」類。我建議使用「Tattletale」工具來查看您的項目罐子裏發生了什麼。 – mcsilvio

1

可能是你的commons-pool-x.x.x.jar沒有出現在部署文件夾中的lib文件夾中,可通過apache-tomcat-7.0.54\lib文件夾複製這個jar文件來解決

-1

我也遇到了一些問題,在我的回購公地pool2-2.1.jar未正確下載。我們需要下載正確的jar。