2 votes

Dépendances de ClassNotFoundException dans IntelliJ

J'obtiens l'erreur suivante : ClassNotFoundException

java.lang.ClassNotFoundException: com.oracle.ojbdc6-11.2.0.1.0
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:186)
  at uk.ac.ebi.mydas.examples.Conn.main(Conn.java:23)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:601)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Sur mon IDE intelliJ, je suis presque sûr d'avoir défini les dépendances correctement sur Maven : parce que dans mon dossier External Libraries Folder, il y a un paquet "Maven : com.oracle:ojdbc6:11.2.0.1.0" listé.

Je suppose qu'il y a un problème avec mon code qui n'est pas capable d'adresser la classe correctement.

try {
    Class.forName("com.oracle.ojbdc6");
}

Je me rends compte que les pilotes jdbc ne sont pas dans le repo Maven, j'ai donc dû les télécharger directement depuis le site d'oracle (numéro de version correct) et les charger dans ma bibliothèque. J'ai ensuite ajouté la dépendance pom.xml avec succès.

Maven: ojdbc dependency installed

Enfin, voici mon POM.xml :

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>

Merci !

EDIT : Le problème persiste malgré la prise en compte de la classe OracleDriver. enter image description here

EDIT2 : Voici un aperçu de ma configuration des modules/dépendances sur InnteliJ enter image description here

1voto

Sotirios Delimanolis Points 77933

L'ancienne méthode (jdbc3) de chargement des pilotes jdbc consistait à les charger à l'aide de la commande Class.forName(String) . Chaque pilote avait probablement un bloc statique qui les faisait s'enregistrer auprès de la DriverManager .

La chaîne que vous passez à Class.forName(String) est le nom de classe entièrement qualifié du pilote. Par conséquent, com.oracle.ojbdc6 y com.oracle.ojbdc6-11.2.0.1.0 n'ont aucun sens à moins qu'il ne s'agisse de classes réelles dans votre classpath.

Au lieu de com.oracle.ojbdc6 sur

try {
    Class.forName("com.oracle.ojbdc6");
}

utiliser soit oracle.jdbc.driver.OracleDriver o oracle.jdbc.OracleDriver qui sont toutes deux des classes de conducteurs. Cela dépend de la version du pilote jdbc que vous utilisez.

Voici un lien respuesta .

0voto

Filip Points 847

Ça ne devrait pas être ojdbc6 au lieu de ojbdc6 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X