2016-11-08 1 views
0

Ich versuche, eine einfache Java-Webanwendung auszuführen, die eine Verbindung zu einer Back-End-DB2-Datenbank (IBM dashdb) herstellt, um einige Daten abzurufen.Kein geeigneter Treiber für jdbc gefunden: db2 mit db2jcc4.jar in web-inf lib

Ich bekomme eine seltsame Fehlermeldung, wenn ich versuche, diese Anwendung auf einem ubuntu gehosteten Tomcat 8.5 zu starten. Ich habe es geschafft, diese Anwendung auf einem Tomcat V8 unter Windows gehostet zu bekommen.

Die tatsächliche Fehlermeldung lautet:

Keine passenden Treiber für jdbc gefunden: db2: // YP-dashdb ......

Ich verstehe nicht wirklich, warum diese passiert, weil ich das db2jcc4 habe. in meinem web-inf \ lib Ordner.

Ich dachte, es war etwas falsch mit der Bibliothek, also habe ich eine separate Java-App erstellt, um einfach einige Daten aus der Datenbank zu verbinden und abzurufen. Das funktioniert mit der gleichen Bibliothek.

Dies ist der Code zum Einrichten der Verbindung (ich habe einige der Details getrimmt).

private Connection conn = null; 
conn= DriverManager.getConnection("jdbc:db2://yp-dashdb..."); 

Denken Sie daran, dass dies genau die gleiche Code funktioniert in einer Standard-Java-Anwendung, so dass die Verbindungsdaten arbeiten, und es gibt keinen Tippfehler in den Verbindungsinformationen.

Gibt es etwas Offensichtliches, das ich hier übersehen habe?

+0

Welche Version des Glases haben Sie? Enthält die JAR-Datei eine Datei mit dem Namen 'META-INF/services/java.sql.Driver'? Welche Version von Java verwenden Sie? – Andreas

+0

Hey, wie oben erwähnt. Genau dieses Glas arbeitete an einem anderen Kater. Ich glaube nicht, dass dem Glas irgendetwas fehlt. Ich benutze ibm java 1.8. –

Antwort

0

Nachdem er einige Zeit damit verbringen, diese ein, um herauszufinden, ich das Problem herauszufinden. Meine Treiber wurden nicht vom DriverManager registriert. Die schnelle Lösung, die ich dafür gefunden habe, war, sie manuell zu registrieren, bevor ich versuche, den Treiber zu laden.

DriverManager.registerDriver(new com.ibm.db2.jcc.DB2Driver()); 

Das hat mein Problem gelöst. Die Art und Weise, wie ich davon erfahren habe, war, alle registrierten Fahrer auszudrucken und auszudrucken. Nicht die eleganteste Lösung, aber es half mir herauszufinden, was ich vermisse.

 /* 
     System.out.println("checking for drivers"); 
     Enumeration<Driver> myDrivers = DriverManager.getDrivers(); 
     System.out.println(myDrivers.hasMoreElements()); 

     while(myDrivers.hasMoreElements()){ 
      System.out.println(myDrivers.nextElement().toString()); 
     } 
     */ 
0

WEB-INF/lib ist in Ihrer Anwendung. Es könnte sein, dass Tomcat diesen Treiber benötigt, bevor die App geladen wird? Versuchen Sie es in die Tomcats lib Ordner setzen und neu zu starten ...

Hier ist eine andere Frage zum gleichen Thema ist: Why must the JDBC driver be put in TOMCAT_HOME/lib folder?

+0

Kein Glück:/Ich habe es in den Ordner lib verschoben, neu gestartet und neu implementiert .. Der gleiche Fehler. –

+0

Können Sie den vollständigen Pfad des lib-Ordners angeben, in den Sie ihn eingefügt haben? – Igor

+0

Mein Pfad ist: /home/florin/Downloads/Tomcat/apache-tomcat-8.5.6/lib –

Verwandte Themen