java.lang.ClassNotFoundException: org.postgresql.Driver, Android

J’exécute Eclipse sur Windows.

Après ce tutoriel, j’ai téléchargé JDBC4, je l’ai ajouté à mon chemin de construction à l’aide de Projet> Propriétés> append un fichier JAR externe. Le fichier a fonctionné (le fichier .classpath indique le chemin correct pour la .classpath ).

Le paquet apparaît dans mon dossier Bibliothèques référencées, je continue donc le tutoriel.

  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(); } } 

Je pense que ce serait aussi simple que cela, mais je suis frappé par cette grande trace de stack longue commençant par

  java.lang.ClassNotFoundException: org.postgresql.Driver 

(Je peux fournir plus si nécessaire)

J’ai essayé d’ include org.postgresql.*; mais cela n’a pas aidé non plus. J’ai aussi essayé le JDBC3 mais pas de chance non plus.

J’ai regardé le pilote JDBC PostgreSQL avec Android qui fournissait une réponse vague en disant que je ferais mieux d’utiliser HTTP + JSON. Ce que je n’ai jamais utilisé.

Je suis un nouvel utilisateur d’Android, de Postgresql et du développement Web. Une réponse simple serait donc appréciée.

Vous devez append le pilote JDBC PostgreSQL dans votre projet, comme indiqué dans Mvnrepository .

Gradle :

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

Maven :

  postgresql postgresql 9.0-801.jdbc4  

Vous pouvez également télécharger le fichier JAR et l’importer manuellement dans votre projet.

Vous devez placer le paquet jar dans le dossier lib (WebContent-WEB-INF-lib) et cliquer avec le bouton droit de la souris sur le chemin de construction du paquet jar, puis append-le au chemin de construction.

C’est un problème de CLASSPATH; le pilote JDBC PostgreSQL n’est pas disponible lorsque le chargeur de classes tente de le charger. Vous devez l’append correctement à votre CLASSPATH.

Si cela fonctionne dans Eclipse, c’est parce que l’ajout d’un fichier JAR au chemin de génération l’ajoute à CLASSPATH. Vous devez comprendre le fonctionnement de CLASSPATH sans l’aide des roues d’entraînement Eclipse.

Le téléchargement et l’ajout du fichier JAR JDBC au chemin créé de l’outil que vous utilisez peut constituer une solution temporaire, puisqu’aucune des solutions ci-dessus n’a fonctionné dans mon cas.

J’ai fait face au même problème; mais l’erreur que j’ai commise a été la dépendance postgre que j’ai ajoutée uniquement dans la section plugins; Après avoir ajouté la dépendance postgre (la suivante) dans la section des dépendances du projet, cela a fonctionné.

  postgresql postgresql 9.1-901-1.jdbc4  

En supposant que vos dépendances soient correctement configurées (voir le répertoire libs dans le SDK Android version 17 ou supérieure , comme indiqué dans un commentaire), vous devriez pouvoir faire fonctionner le pilote 9.2 en l’enregistrant explicitement auprès du gestionnaire de pilotes.

Au lieu de:

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

Utilisation:

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

(J’ai aussi essayé avec le bocal 9.3-1100-jdbc41, mais cela ne fonctionnerait pas.)

Notez que, comme l’ explique Craig Ringer dans une réponse à une question dupliquée , l’utilisation de JDBC à partir d’Android est rarement une bonne idée, car les connexions JDBC ne sont pas bien adaptées aux schémas d’utilisation du réseau généralement utilisés par les appareils Android.