2013-07-05 3 views
0

J'écris une application Java qui doit insérer des données dans la base de données MySQL via JDBC. Voici le code correspondant:inattendu java.lang.NoClassDefFoundError lors de l'appel de DriverManager.getConnection()

public JDBCDecoder() { 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     System.out.println("Loaded MySQL JDBC driver"); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Exception attempting to load MySQL JDBC driver"); 
    } 

    String url = "jdbc:mysql://localhost/db"; 

    Properties props = new Properties(); 
    props.put("user", "root"); 
    props.put("password", "root"); 

    try { 
     conn = DriverManager.getConnection(url, props); 
     conn.setAutoCommit(false); 
    } catch (SQLException e) { 
     Throwables.propagate(e); 
    } 
    .... 

} 

Voici la trace de la pile d'erreur que je suis arrivé après avoir essayé d'exécuter le code:

java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:249) 
    at java.sql.DriverManager.getCallerClass(DriverManager.java:477) 
    at java.sql.DriverManager.getConnection(DriverManager.java:576) 
    at java.sql.DriverManager.getConnection(DriverManager.java:154) 
    at exportclient.JDBCExportClient$JDBCDecoder.<init>(JDBCExportClient.java:179) 
    at exportclient.JDBCExportClient.constructExportDecoder(JDBCExportClient.java:604) 
    at export.processors.GuestProcessor$1.run(GuestProcessor.java:113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at utils.CoreUtils$1$1.run(CoreUtils.java:259) 
    at java.lang.Thread.run(Thread.java:680) 

qui me semble bizarre parce que: 1) Je ne suis pas en train de se connecter à Base de données Oracle 2) en fait j'ai un ojdbc6.jar (qui contient oracle.jdbc.OracleDriver) dans mon classpath. Donc, je suis complètement ignorant pourquoi cette erreur arriverait.

Toute suggestion sera appréciée. Merci d'avance!

+0

Il devrait y avoir une cause racine pour cela ... Pouvez-vous s'il vous plaît poster la pleine stacktrace? –

+0

@CristianMeneses Merci pour votre commentaire! J'ai mis à jour la trace de la pile. – quantumrose

+0

Pouvez-vous poster aussi le code pour votre classe? Je suppose qu'il n'est pas complet parce que votre 'Class.forName (..)} n'est pas enveloppé sur un bloc' try/catch' –

Répondre

0
+0

Merci d'avoir répondu! J'ai essayé d'imprimer la propriété système "jdbc.drivers" avant d'appeler DriverManager.connections() alors que la sortie est "null" ...... – quantumrose

+0

Il va également essayer de charger les pilotes listés dans tous les 'META-INF/services/java.sql.Driver' fichiers trouvés dans le classpath –

Questions connexes