2017-09-14 2 views
2

Ich bin ein servicemix bundle, die zu load jdbc driver versucht und schlägt mit NachrichtApache Servicemix können JDBC-Treiber für Apache dbcp nicht geladen

Cannot load JDBC driver class 'com.mysql.jdbc.Driver' 

Hier meine pom.xml Datei

 <!-- MySQL --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.32</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-pool2</artifactId> 
     <version>2.4.2</version> 
    </dependency> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <configuration> 
       <instructions> 
        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
        <Import-Package> 
         com.mysql.jdbc, 
         * 
        </Import-Package> 
        <DynamicImport-Package> 
         * 
        </DynamicImport-Package> 
       </instructions> 
      </configuraiton> 
     </plugin> 

I unten Linien erwähnt in meine Datei features.xml, die mit dem Befehl features:addurl zu karaf hinzugefügt wird.

<bundle>wrap:mvn:mysql/mysql-connector-java/5.1.32</bundle> 
<bundle>wrap:mvn:commons-dbcp/commons-dbcp/1.4</bundle> 
<bundle>wrap:mvn:commons-pool/commons-pool/1.6</bundle> 
+0

Haben Sie überprüft https://stackoverflow.com/questions/29245102/maven-java-lang-classnotfundexception-com-mysql-jdbc-driver? – user7294900

+0

Gibt es eine Route, die definiert ist? Wenn ja, bitte posten Sie sie? Ist der MySQL-Connector installiert? –

+0

@ user7294900: mvn sauber installieren funktioniert einwandfrei. Das Problem, mit dem ich konfrontiert bin, hat etwas mit osgi import zu tun - Export – veer7

Antwort

0

ich dieses Problem behoben, indem Sie die servicemix wrapper jar for dbcp @https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3

Resultierender Pom-Eintrag

<dependency> 
     <groupId>org.apache.servicemix.bundles</groupId> 
     <artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId> 
     <version>1.4_3</version> 
    </dependency> 

Hinweis: bei der Verwendung von karaf oder jede OSGi immer auf META-INF/MANIFEST.MF Bündel/jar-Datei geben, um zu sehen, was es importiert (Import-Package) und was es exportiert (Export-Package)

Als unten karaf-console Screenshots von dbcp Bündel wird com.mysql.jdbc pakage für ServiceMix dbcp

enter image description here

Das gleiche Import wie im Screenshot s importiert hätte für <bundle>wrap:mvn:commons-dbcp/commons-dbcp/1.4$Import-Package=com.mysql.jdbc</bundle> aber vergeblich sein müssen.

0

Haben Sie gesehen ClassNotFoundException: com.mysql.jdbc.Driver not found while using service mix? Der Benutzer hinzugefügt die unten an der Pom:

<osgi-import-package> 
    org.apache.commons.dbcp 
</osgi-import-package> 

<dependency> 
    <groupId>org.apache.servicemix.bundles</groupId> 
    <artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId> 
    <version>1.4_3</version> 
</dependency> 

Und änderte auch die Route von

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> 

zu

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
+0

'servicemix.bundles' für' dbcp' ist nichts anderes als 'Bündel wrap', die ich schon von' Wrap am Erreichen: mvn: mysql/mysql-connector-java/5.1.32 \t Einschlag: mvn: commons- dbcp/commons-dbcp/1.4 \t wrap: mvn: commons-pool/commons-pool/1.6 'und auch ich bin bereits dbcp als datenquelle in meinem code verwenden, so müssen sie das nicht ändern. Ich habe meine Frage aktualisiert. – veer7