Pilote JDBC - ClassNotFoundException, NetBeans
J'ai beaucoup cherché et a passé beaucoup de temps à essayer registre du pilote JDBC.
Tout d'abord, j'ai copié mon ojdbc7.jar fichier (téléchargé à partir d'Oracle) dans le répertoire indiqué ci-dessous:
Driver File(s): /Users/Kamil/glassfish4/jdk7/jre/lib/ext/ojdbc7.jar
Driver Class: oracle.jdbc.OracleDriver
//this is copied from Services/Databases/Drivers/ojdbc
Ensuite, j'ai essayé le code suivant:
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(myDriver);
} catch (ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
... et celui-ci:
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
... et avec cette ligne à la place:
Class.forName("oracle.jdbc.driver.OracleDriver");
Je reçois toujours ClassNotFoundException 🙁
Voici le code j'essaie de le lancer:
Connection DBconn;
String USER = "root";
String PASS = "root";
System.out.println("Connecting to database...");
DBconn = DriverManager.getConnection("mysql://localhost:3306/RestToolDatabase", USER, PASS);
System.out.println("Creating statement...");
Statement stmt = DBconn.createStatement();
String sql;
sql = "select surname, id, age\n"
+ "from customers \n"
+ "where name = \"maria\" \n"
+ "order by id;";
ResultSet rs = stmt.executeQuery(sql);
J'ai aussi lu sur la définition du classpath comme décrit ici:
- Cliquez-droit sur votre Projet.
- Sélectionnez Propriétés.
- Sur le côté gauche, cliquez sur Bibliothèques.
-
En vertu de l'onglet Compiler - cliquez sur Add Jar/Folder bouton.
mais il n'y a pas de "Propriétés/Bibliothèques" option dans NetBeans...
J'utilise Maven et il y a dépendance suivant ajouté par certains de la bibliothèque:
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
<type>pom</type>
</dependency>
Peut-être il ya une certaine solution de contournement, ou d'un autre moyen pour l'ajouter automatiquement? Il DOIT être simple mais je suis inexpérimenté et gaspillé beaucoup de temps sur cette. S'il vous plaît aider.
MODIFIER: Merci pour les réponses, oui, j'utilise MySQL Server at localhost:3306 [racine]. J'ai JDBC MySQL connector installé ici:
/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/ide/modules/ext/mysql-connector-java-5.1.23-bin.jar
Lorsque je vais dans "Services" --> "Pilotes" --> "MySQL Connector/J pilote)" il est le Pilote du chemin de Classe, exactement comme vous l'avez suggéré, j'ai donc utiliser la Classe.forName("com.mysql.jdbc.Le pilote") maintenant.
J'ai cliqué droit sur "MySQL Connector/J pilote)" pilote et est allé à "se Connecter en Utilisant..." --> "localhost, port 3306, utilisateur, mot de passe". Et il est connecté maintenant, je vois une nouvelle connexion. Mais encore obtenir ClassNotFoundException.
EDIT 2 - cette solution a fonctionné pour moi:
J'ai ajouté, à la suite des dépendances dans pom.xml:
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
</dependency>
... et bâti de la demande; le pilote a été téléchargé et installé. Aussi simple que ça... j'ai passé beaucoup de temps sur ce... Il fonctionne - ouais! 🙂
- 1a) ne pas utiliser
lib/ext
, 1b) êtes-vous sûr que c'est la JVM qui exécute votre application, 2) êtes-vous de la connexion à Oracle ou MySQL - Re votre edit: C'est seulement interne à Netbeans, lors de l'exécution d'une application, le pilote doit être dans le classpath de l'application. Je dirais que la relative barre latérale doit avoir suffisamment de questions semblables à des problèmes et des solutions.
- OK, je vois. Puis-je vous demander où en est l'application de chemin de classe? Est-ce Nomduprojet/ dossier ou Nomduprojet/src/ ou Nomduprojet/cible/? Je suppose que je devrais supprimer le pilote de NetBeans interne classpath.
- Lors de l'exécution de l'intérieur Netbeans, c'est le chemin de génération configuré pour le projet dans Netbeans. En dehors de Netbeans, il dépend du déploiement etc et n'est pas quelque chose a expliqué dans une réponse courte. Et non, vous ne devez pas supprimer de NetBeans interne classpath, parce que le plus probable, c'est utilisé à l'intérieur de Netbeans si vous utilisez sa base de données interne d'accès.
Vous devez vous connecter pour publier un commentaire.
Vous utilisez Oracle JDBC driver sur une base de données MySQL, vous devez utiliser
Edit: Merci pour les commentaires de @duffymo et @Marc-Rotteveel qui a remarqué que l'URL de connexion est également à tort, la connexion correcte est:
mysql://localhost:3306/
(qui manquejdbc:
btw)Paramètre classpath :
Et emballage dépendante des librairies avec chemin relatif dans 'dist' :
Je ne pense pas que le JDBC JAR appartient dans ce répertoire. Le CNF exception me soutient.
Je recommande de mettre ce POT dans votre projet WEB-INF/lib, reconditionnement de la GUERRE, et d'essayer de nouveau.
Cette ligne est correcte:
Le nom complet de la classe doit correspondre à celui dans le POT. C'est le seul qui ne.
Vous devez utiliser le pilote qui correspond à votre base de données: Oracle, MySQL pour le serveur MySQL. La base de données que vous utilisez?