2014-05-14 3 views
6

Ich bin neu in Spring, immer noch lernen. Ich verwende Spring Tool Suite Version 3.5 mit Java 6 auf meinem Mac. Ich bin versucht BasicDataSourceNoClassDefFoundError: org/Apache/Commons/Pool/KeyedObjectPoolFactory BasicDataSource Frühling

<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> 

Ich habe die folgenden JAR-Dateien auf meinem Klassenpfad zu verwenden: commons-dbcp-1.4.jar, commons-pool2-2.2.jar, commons-collections4-4.0.jar. Aber ich sehe immer noch eine NoClassDefFoundError Referenz auf 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) 

Ich habe nach einer Antwort gesucht und fand eine existing similar question, aber im Gegensatz zu diesem einen habe ich die JAR-Dateien habe auf meinem Classpath.

Ich habe Probleme beim Formatieren von Code in diesem Forum. Mein XML-Code wird nicht angezeigt. Es tut uns leid.

+1

könnte ein Problem mit der Versionsnummer der Gläser sein .... nur überprüfen Sie, ob die Versionsnummern, die Sie für die Gläser verwendet haben, miteinander kompatibel sind –

+0

Hallo Raju Rudru, Ja, dass ich entdeckt habe, dass dies das Problem ist. – user3636521

Antwort

6

Sie mischen die Versionen. Die Klasse KeyedObjectPoolFactory existiert im 1.x-Zweig von commons-pool, aber nicht in 2.x. Sie sollten stattdessen mit commons-pool-1.5.4 versuchen (das ist die korrekte Versionsabhängigkeit für commons-dbcp-1.4)

Und kann ich vorschlagen, z. Maven Ihre Abhängigkeiten verwalten - Sie die transitiven Abhängigkeiten kostenlos korrekt versioniert bekommen (meistens zumindest ...)

Cheers,

+1

Es sieht so aus, als müsste ich 8 Stunden warten, bevor ich meine eigene Frage beantworte, weil ich weniger als 10 Reputation habe? Aber dank Anders R.Bystrup und Raju Rudru, Ja. In der Zwischenzeit habe ich festgestellt, dass Sie beide recht haben. Hier ist der Javadoc für Commons Pool 2.2 API http://commons.apache.org/proper/commons-pool/api-2.2/index.html Und hier ist die Version 1.6 http: //commons.apache. org/proper/commons-pool/api-1.6/index.html Die Version 1.6 ist die letzte Version, die KeyedObjectPoolFactory enthält. Also habe ich commons-pool-1.6.jar erhalten und es zu meinem Klassenpfad hinzugefügt und den Fehler behoben. – user3636521

+0

Ich kann auch nicht stimmen. Aber danke beiden sowieso :) – user3636521

+0

@ user3636521, akzeptieren Sie es als Antwort atleast! –

Verwandte Themen