我是Spring的新手,还在学习。我在Mac上使用带有Java 6的Spring Tool Suite版本3.5。我正在尝试使用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>
我的类路径上有以下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)
我已经找到答案,并找到了existing similar question,
但是与那个不同,我的类路径中包含JAR。
我在此论坛中无法格式化代码。我的XML代码没有出现。抱歉。
最佳答案
您正在混淆版本。 KeyedObjectPoolFactory
类存在于commons-pool
的1.x分支中,但不存在于2.x中。您应该尝试使用commons-pool-1.5.4
(这是commons-dbcp-1.4
的正确版本依赖性)
并且我可以建议使用例如。 Maven管理依赖关系-您将免费获得正确定义可传递依赖关系的版本(主要是至少...)
干杯,
关于spring - NoClassDefFoundError:org/apache/commons/pool/KeyedObjectPoolFactory BasicDataSource Spring,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23654382/