NoClassDefFoundError:org/apache/commons/pool/KeyedObjectPoolFactory BasicDataSource Spring

use*_*521 7 apache spring jar apache-commons-dbcp

我是春天的新手,还在学习.我在Mac上使用Spring Tool Suite 3.5和Java 6.我正在尝试使用BasicDataSource

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

我有我的类路径中的以下jar文件:commons-dbcp-1.4.jar,commons-pool2-2.2.jar,commons-collections4-4.0.jar.但我仍然看到了一个NoClassDefFoundError参考KeyedObjectPoolFactory.

Error creating bean with name 'dataSource' defined in class path resource [test-   infrastructure-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
Run Code Online (Sandbox Code Playgroud)

我已经搜索了一个答案,发现了一个类似的问题,但与那个问题不同的是,我的类路径上有JAR.

我在此论坛中格式化代码时遇到问题.我的XML代码没有出现.抱歉.

And*_*rup 8

你正在混淆这些版本.本KeyedObjectPoolFactory类存在的1.x的分支commons-pool,但不是在2.x版本 您应该尝试使用commons-pool-1.5.4(这是正确的版本依赖commons-dbcp-1.4)

我可以建议使用例如.Maven管理您的依赖项 - 您将获得免费版本化的传递依赖项(大多数情况下至少...)

干杯,