2017-09-14 7 views
2

J'ai un servicemix bundle qui essaie de load jdbc driver et échoue avec le messageapache ServiceMix ne peut pas charger le pilote jdbc pour apache dbcp

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

Voici mon fichier pom.xml

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

J'ai ci-dessous les lignes mentionnées dans mon fichier features.xml qui est ajouté à karaf en utilisant la commande features:addurl.

<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

Avez-vous vérifié https://stackoverflow.com/questions/29245102/maven-java-lang-classnotfoundexception-com-mysql-jdbc-driver? – user7294900

+0

Y a-t-il un itinéraire qui est défini, si oui, veuillez le poster? Le connecteur mysql est-il installé? –

+0

@ user7294900: installation propre mvn fonctionne parfaitement bien. Le problème que je rencontre est quelque chose à voir avec osgi import - export – veer7

Répondre

0

Je résolu ce problème en ajoutant le servicemix wrapper jar for dbcp @https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3

Entrée pom résultante

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

Note: lors de l'utilisation karaf ou tout OSGi donnent toujours attention à META-INF/MANIFEST.MF du paquet/fichier jar pour voir ce qu'il importe (Import-Package) et ce qu'elle exporte (Export-Package)

Comme ci-dessous karaf-console capture d'écran du paquet DBCP, com.mysql.jdbc pakage est importé pour dbcp ServiceMix

enter image description here

La même importation que la capture d'écran s aurait dû apparaître pour <bundle>wrap:mvn:commons-dbcp/commons-dbcp/1.4$Import-Package=com.mysql.jdbc</bundle> mais en vain.

0

Avez-vous vu ClassNotFoundException: com.mysql.jdbc.Driver not found while using service mix? L'utilisateur a ajouté le ci-dessous pour la 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> 

Et aussi changé la route de

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

à

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

'' servicemix.bundles' pour dbcp' est rien 'paquet wrap' que je réalisais déjà par' wrap: mvn: mysql/mysql-connector-java/5.1.32 \t wrap: mvn: Communes- dbcp/commons-dbcp/1.4 \t wrap: mvn: commons-pool/commons-pool/1.6 'et aussi j'utilise déjà dbcp comme source de données dans mon code, donc je n'ai pas besoin de changer ça. J'ai mis à jour ma question. – veer7