Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1497 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Erreur à la compilation en utilisant driver postgresql. Classpath?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur à la compilation en utilisant driver postgresql. Classpath?

n°1925428
igarimasho
Posté le 21-09-2009 à 00:45:26  profilanswer
 

J'ai un répertoire /home/igarimasho/java_test/ qui contient un fichier Application.java:

Code :
  1. import java.sql.*;
  2. class Application {
  3. public static void main(String[] args) {
  4.  System.out.println("Hello World!" );
  5.  Class.forName("org.postgresql.Driver" );
  6. }
  7. }


 
ainsi que le fichier postgresql.jar
 
Je tente une compilation avec la commande suivante:

Code :
  1. $ javac -classpath /home/igarimasho/java_test/postgresql.jar Application.java


Et forçément le compilateur me crache à la figure:

Citation :

Application.java:6: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
                Class.forName("org.postgresql.Driver" );
                             ^
1 error


 [:maestro]  
 
Où est le problème?
 
 
EDIT: j'ai googlé, et d'autres personnes ont le même problème, mais j'ai pas la solution où du moins l'explication de la source du problème  :(
 
EDIT: issue de la doc du driver postgresl: http://jdbc.postgresql.org/documentation/84/load.html

Citation :

The forName() method can throw a ClassNotFoundException if the driver is not available.


Cool, mais mon classpath a l'air bon!
 
EDIT: bourdel, en ajoutant à mon code:

Code :
  1. System.out.println(System.getProperty("java.class.path" ));


Je vois que l'option du classpath ne passe pas correctment au compilateur. Pourquoi???  :??:
 
En fait l'output complet de l'appli est: (je suis sous Osx)

Code :
  1. Hello World!
  2. .:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar


Et mon postgresql.jar il est passé où?


Message édité par igarimasho le 21-09-2009 à 01:11:31
mood
Publicité
Posté le 21-09-2009 à 00:45:26  profilanswer
 

n°1925437
cbeyls
Hail to the King, Baby
Posté le 21-09-2009 à 03:39:57  profilanswer
 

Plusieurs choses:
 
1) Tu dois passer ton classpath au compilateur javac ET à la JVM java à l'exécution. Ici tu ne parles que de le passer au compilateur (javac) et pourtant tu as l'air d'exécuter un programme de test (java).
2) Le compilateur ne veut pas compiler ton code parce qu'il te demande de catcher ou thrower ClassNotFoundException puisque cette exception peut être levée à l'exécution par la méthode Class.forName(). Il ne dit pas qu'il ne trouve pas postgreSQL, il dit juste que ton code doit prévoir le cas où il ne le trouve pas (je rappelle qu'on est à la compilation et pas à l'exécution). Donc ajoute un "throws ClassNotFoundException" à ta méthode ou un try { ... } catch (ClassNotFoundException e) autour du code.
 
Le mieux est d'utiliser un IDE comme Eclipse ou Netbeans pour développer et compiler, afin d'éviter ce genre d'erreur de débutant.


Message édité par cbeyls le 21-09-2009 à 03:41:13
n°1925449
boulax
Inserer phrase hype en anglais
Posté le 21-09-2009 à 08:39:12  profilanswer
 

Le mieux serait surtout de comprendre la différence entre execution et compilation, surtout en tant que débutant.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1925454
igarimasho
Posté le 21-09-2009 à 09:07:10  profilanswer
 

Merci java c'est pas mon premier langage compilé, "convention over configuration" ça ne s'applique pas qu'à Rails :jap:
 
cbeyls avait bien vu, il fallait wrapper un try...catch... mais ça le message d'erreur était pas ultra explicite pour un nouveau chez java.

n°1925456
boulax
Inserer phrase hype en anglais
Posté le 21-09-2009 à 09:13:25  profilanswer
 

Je vois mal comment on aurait pu faire plus explicite comme message....?


---------------
Posté depuis des chiottes, sales. Me gusta.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Erreur à la compilation en utilisant driver postgresql. Classpath?

 

Sujets relatifs
Erreur à la compilationProblème erreur 404
Probleme Compilation gccProblème de compilation gcc / Repertoires 'include' pas trouvés
Erreur 3061 sous VBA ACCESScross compilation C++ et wrapper C++
[Résolu] erreur stray \320 \240[Résolu]pb compilation operator ++
[XML] probleme de compilation dans libxml2 
Plus de sujets relatifs à : Erreur à la compilation en utilisant driver postgresql. Classpath?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR