2012-06-05 5 views
12

Ich verwende Eclipse unter Windows.java.lang.ClassNotFoundException: org.postgresql.Driver, Android

Nach this tutorial Ich heruntergeladen JDBC4, fügte es zu meinem Build-Pfad mit Projekt> Eigenschaften> externe JAR hinzufügen, durchsucht nach der Datei, es funktionierte (.classpath Datei zeigt die richtige lib-Pfad).

Das Paket wird in meinem Ordner referenzierte Bibliotheken angezeigt, daher fahre ich mit dem Lernprogramm fort.

import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.SQLException; 

    .... 

    public void open() 
     { 
    try { 
     Class.forName("org.postgresql.Driver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

    try { 
     conn = DriverManager.getConnection(url, username, password); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

Ich denke, es wäre so einfach sein, aber ich getroffen zu mit diesem großen langen Stack-Trace, beginnend mit

java.lang.ClassNotFoundException: org.postgresql.Driver 

(Ich kann mehr, wenn nötig)

versuchte ich include org.postgresql.*; aber das half auch nicht. Ich habe auch die JDBC3 ausprobiert, aber auch kein Glück.

Ich schaute auf Driver JDBC PostgreSQL with Android, die eine vage Antwort zur Verfügung gestellt, die sagen, ich wäre besser dran nur mit HTTP + JSON. Was ich noch nie benutzt habe.

Ich bin brandneu auf Android, Postgresql, Web-Entwicklung, so würde eine einfache Antwort geschätzt werden.

+1

Haben Sie die .jar-Datei anstelle von 'libs' in einen Ordner' lib' gestellt? Seit [ADT r17] (http://tools.android.com/recent/dealingwithdependenciesinandroidprojects) werden Bibliotheken, die von externen Speicherorten referenziert sind, nicht in die .apk-Datei gepackt. Das Ergebnis ist, dass Ihr Projekt gut kompiliert wird, aber zur Laufzeit werden Sie wegen der fehlenden Bibliotheken auf NoClassDefFoundError stoßen. Es gibt viele ähnliche Q & A's auf SO übrigens; z.B. [dieser] (http://stackoverflow.com/a/9820881/1029225). –

+0

Habe es zur Arbeit gebracht. Viel zu lernen: P Danke! – user1438048

Antwort

0

Es ist ein CLASSPATH-Problem; Der PostgreSQL-JDBC-Treiber ist nicht verfügbar, wenn der Klassenlader versucht, ihn zu laden. Sie müssen es Ihrem CLASSPATH korrekt hinzufügen.

Wenn es in Eclipse funktioniert, liegt das daran, dass das Hinzufügen einer JAR zum Build-Pfad ist und es zum CLASSPATH hinzugefügt wird. Sie müssen verstehen, wie CLASSPATH ohne die Eclipse-Trainingsräder funktioniert, um Ihnen zu helfen.

-2

Angenommen, Ihre Abhängigkeiten sind richtig konfiguriert (siehe libs directory in Android SDK version 17 or above, wie in einem Kommentar erwähnt), sollten Sie in der Lage sein, den 9.2 Treiber zu erhalten, indem Sie ihn explizit mit dem Treibermanager registrieren.

Statt:

Class.forName("org.postgresql.Driver"); 

Verwendung:

DriverManager.register(new org.postgresql.Driver()); 

(. Ich habe auch mit dem 9,3-1100-jdbc41 jar versucht haben, aber das würde nicht funktionieren)

Bitte beachten Sie, dass die Verwendung von JDBC von Android als explained by Craig Ringer in an answer to a duplicate question selten eine gute Idee ist, da JDBC-Verbindungen nicht gut für Netzwerknutzungsmuster geeignet sind, die normalerweise von Android-Geräten verwendet werden.

5

Sie sollten das JAR-Paket in den Ordner lib (WebContent-WEB-INF-lib) setzen, und klicken Sie rechts auf der JAR-Paket-Build-Pfad-add Pfad

0

Downloading zu bauen und das Hinzufügen der JDBC-JAR-Datei Der eingebaute Pfad des Werkzeugs, das Sie verwenden, kann eine vorübergehende Lösung sein, da keine der obigen Lösungen in meinem Fall funktioniert.

4

Sie müssen den PostgreSQL JDBC-Treiber in Ihrem Projekt hinzufügen, wie in Mvnrepository erwähnt.

Grandle:

// http://mvnrepository.com/artifact/postgresql/postgresql 
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4' 

Maven:

<dependency> 
    <groupId>postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.0-801.jdbc4</version> 
</dependency> 

Sie können auch download die JAR und Import zu einem Projekt manuell.

+1

Sind Sie sicher, dass dies die richtige ist? https://mvnrepository.com/artifect/org.postgresql/postgresql – Mygod

+0

@Mygod Danke, ich habe meinen Link aktualisiert. –

Verwandte Themen