Compilation: probleme ajout de librairies

Compilation: probleme ajout de librairies - Java - Programmation

Marsh Posté le 20-08-2007 à 15:34:17    

Bonjour,
 
je m'arrache depuis quelques heures à essayer de compiler mes sources JAVA. Les fenetres sont faites avec une librairie QT Jambi.
J'ai un dossier "mon_prog" pour mon programme qui contient:
http://www.casimages.com/img/jpg/0708200329411046984.jpg
Dans le dossier qtjambi, il y a un fichier qtjambi.jar et un dossier bin qui contient des dll.
 
Dans mon fichier compilation.bat:

Code :
  1. @echo off
  2. echo Compilation en cours...
  3. set path=%path%;.\qtjambi-win32-gpl-4.3.0_01\qtjambi.jar
  4. set path=%path%;.\mysql-connector-java-5.1.0-bin.jar
  5. set path=%path%;"C:\Program Files\Java\jdk1.6.0_02\bin"
  6. cd sources
  7. javac *.java -d ..\class
  8. echo Compilation terminee !!
  9. pause


 
Mais lorsque je veux compiler ca ne marche pas. Le compilateur est bien détecté. Mais la librairie QT jambi n'est pas du tout prise en compte. Il y a des erreurs pour chaque classe de la librairie (cannont find symbol), et les packages donnent du genre "package com.trolltech.qt.gui does not exist" pour les import.
Je suis sous Win XP.
 
Je ne sais plus quoi faire.
Pliz aidez-moi


Message édité par welcominh le 20-08-2007 à 15:38:21

---------------
Direct-download.com, le moteur de recherche pour Mega
Reply

Marsh Posté le 20-08-2007 à 15:34:17   

Reply

Marsh Posté le 20-08-2007 à 15:54:50    

C'est pas plutot CLASSPATH au lieu de PATH ?!?  :pt1cable:

Reply

Marsh Posté le 20-08-2007 à 16:01:37    

Bah bizarrement si je remplace path par CLASSPATH, le compilateur javac n'est pas reconnu du tout.
Ca met alors le message habituel "javac n'est pas reconnu en tant que commande interne...etc"
:(


---------------
Direct-download.com, le moteur de recherche pour Mega
Reply

Marsh Posté le 20-08-2007 à 16:17:53    

Ben en java on a dex choses :  
 
CLASSPATH : qui contient l'ensemble des repertoires et des jars ou se trouvent tes classes java ou tes librairies
 
PATH (d'ailleurs pas que en java)  contient l'ensemble des repertoires vers les executables  
Donc dans ton cas les 2 premieres lignes CLASSPATH et la 3 eme PATH

Reply

Marsh Posté le 20-08-2007 à 16:36:01    

Des fois je ne sais plus quoi penser. J'ai fait ce que tu m'as dit mais le probleme reste entier. (librairie pas prise en compte)

 

J'ai essayé:

Code :
  1. @echo off
  2. echo Compilation en cours...
  3. set PATH=%PATH%;"C:\Program Files\Java\jdk1.6.0_02\bin"
  4. cd sources
  5. javac *.java -d ..\class -classpath "C:\Documents and Settings\welcominh\Bureau\STI contact affaire\qtjambi-win32-gpl-4.3.0_01\qtjambi.jar";"C:\Documents and Settings\welcominh\Bureau\STI contact affaire\mysql-connector-java-5.1.0-bin.jar"
  6. echo Compilation terminee !!
  7. pause


Et la paf je sais pas pourquoi ca marche  :pt1cable:. Mais on remarquera que j'ai dû mettre les chemins absolus dans le parametre classpath de la ligne de commande. (j'ai essayé en relatif ca plante comme tout a l'heure), mais ca je sais pas pourquoi.

 

La compilation terminée je m'attaque au execution.bat:

Code :
  1. @echo off
  2. cd class
  3. C:\"Program Files"\Java\jre1.6.0_02\bin\java Contact_affaire -classpath "C:\Documents and Settings\welcominh\Bureau\STI contact affaire\qtjambi-win32-gpl-4.3.0_01\qtjambi.jar";"C:\Documents and Settings\welcominh\Bureau\STI contact affaire\mysql-connector-java-5.1.0-bin.jar"
  4. echo fin de l'execution
  5. pause
 

Evidemment il y a des erreurs qui comme par hasard ne m'interpellent pas, malgré que je code un peu de java:

Code :
  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/trolltech/qt/gui/
  2. QMainWindow
  3.         at java.lang.ClassLoader.defineClass1(Native Method)
  4.         at java.lang.ClassLoader.defineClass(Unknown Source)
  5.         at java.security.SecureClassLoader.defineClass(Unknown Source)
  6.         at java.net.URLClassLoader.defineClass(Unknown Source)
  7.         at java.net.URLClassLoader.access$000(Unknown Source)
  8.         at java.net.URLClassLoader$1.run(Unknown Source)
  9.         at java.security.AccessController.doPrivileged(Native Method)
  10.         at java.net.URLClassLoader.findClass(Unknown Source)
  11.         at java.lang.ClassLoader.loadClass(Unknown Source)
  12.         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  13.         at java.lang.ClassLoader.loadClass(Unknown Source)
  14.         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  15. fin de l'execution
  16. Appuyez sur une touche pour continuer...
 

As-tu une idée de ce que ces erreurs veulent dire?
Merci beaucoup :)


Message édité par welcominh le 20-08-2007 à 17:00:36

---------------
Direct-download.com, le moteur de recherche pour Mega
Reply

Marsh Posté le 20-08-2007 à 16:57:58    

Au hasard , le chemin vers le jar pour la compil n'est pas le meme que pour l'execution est ce que tu es sur de toi ?

Reply

Marsh Posté le 20-08-2007 à 17:02:33    

Ah j'ai juste oublié de remplacer. j'ai mis mon pseudo dans les messages pour masquer le nom du proprio du poste sur lequel je bosse. Mais sinon oui j'ai mis le même chemin pour la compilation et l'exécution. [:airforceone]


---------------
Direct-download.com, le moteur de recherche pour Mega
Reply

Marsh Posté le 21-08-2007 à 10:02:30    

Ah j'ai résolu mon probleme. Je poste ma solution:
 
- Quand je fixe le classpath, il ne faut pas mettre de guillements dans le chemin qu'on ajoute au classpath, et ce même si ce chemin contient des espaces (je croyais pourtant qu'il en fallait  [:airforceone] mais en tout cas c'est ce que j'ai retenu de mes tests).
- Les chemins en relatifs (répertoires courants=.  ,  parent= ..) sont en fonction du dossier dans lequel on se trouve à l'exécution. On a beau mettre fixer un chemin au classpath en relatif au début du script. Si en cours de route, on se met à naviguer dans l'arborescence, ces chemins relatifs changent tout autant.
 
Voila voila, en espérant que ca puisse aider un jour quelqu'un ^^.


---------------
Direct-download.com, le moteur de recherche pour Mega
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed