Utilisation de .jar externes - Java - Programmation
Marsh Posté le 15-12-2004 à 15:27:24
tu peux faire
java -classpath chemin\poi.jar;chemin\sybase.jar;indicateurs.jar le.nom.de.ta.Class
Marsh Posté le 15-12-2004 à 15:30:26
ça ça marche (il me dit qu'il lui faut 2 arguments) :
Code :
|
Mais je ne vois pas comment utiliser cette information pour débloquer mon problème
Merci en tout cas
Marsh Posté le 15-12-2004 à 15:32:08
il avait quelle tête le manifest que tu as essayé de mettre dans le jar ?
Marsh Posté le 15-12-2004 à 15:35:38
Vu que j'essayais d'inclure les poi.jar et sybase.jar dans mon indicateurs.jar j'ai mis ça :
Code :
|
après avoir lu un topic sur le sujet (je ne connais rien à la syntaxe de ce fichier et je cherche en ce moment sur le net)
Marsh Posté le 15-12-2004 à 16:49:48
http://java.sun.com/j2se/1.3/docs/ [...] 20Manifest
je vois pas à quoi te sers le '.', vire le ...
et essaye en mettant .\ devant les jars
cf http://java.developpez.com/faq/jav [...] reationJar
je suis surpris qu'il faille repréciser le classpath dans la ligne de lancement du prog
tu peux tester et vérifier si c'est obligatoire ?
Marsh Posté le 15-12-2004 à 17:06:46
Bon j'ai essayé avec ce manifest :
Code :
|
(Je pars d'un généré par Eclipse en ajoutant le Class-Path)
Dans la ligne de commande, avec ou sans le -classpath (et avec ou sans les " " ) ça me lève toujours l'exception
Le problème pourrait venir de mon code sinon ? Mais alors pourquoi ça marcherait dans l'ide ? Et l'appel est on ne peut plus simple :
Code :
|
Merci encore
Marsh Posté le 15-12-2004 à 17:11:45
nan, c'est pa sun problème de ton code NoClassDefFound : a l'execution il trouve pas la classe => ca veur dire qu'il n'a pas le jar dans le classpath ...
t'as bien un retour chariot à la fin de ton manifest ?
tes fichiers jar sont bien tous dans le même rep ?
essaye en mettant des ./ à la place des .\ dans le manifest
Marsh Posté le 15-12-2004 à 17:20:40
Mes .class et mes .jar se trouvent dans un répertoire indicateurs/ à l'intérieur de indicateurs.jar.
J'ai essayé de mettre les poi.jar et sybase.jar à la racine.
Mais toujours le même problème.
Et il y a bien un retour chariot à la fin du manifest.
De toute façon, en forçant "classpath c:\poi.jar" à l'exécution (on peut pas faire plus explicite...) je comprends pas comment ça peut ne pas trouver la classe
Marsh Posté le 15-12-2004 à 17:25:06
Zedar a écrit : Mes .class et mes .jar se trouvent dans un répertoire indicateurs/ à l'intérieur de indicateurs.jar. |
faut pas mettre les jars dans ton jar ! faut ler laisser à côté !
Marsh Posté le 15-12-2004 à 17:27:50
C'était un test, mais effectivement ça marche pas mieux avec
Désolé si je t'ai choqué
Marsh Posté le 15-12-2004 à 17:35:09
Zedar a écrit : C'était un test, mais effectivement ça marche pas mieux avec |
t'en es où la alors ?
je récapitule :
* les jars nécessaire à ton jar dans le même rep que ton jar
* ton jar qui contient le Class-Path sous la forme : Class-Path: poi.jar sybase.jar (y a pas besoin des ./ ou .\ d'apres ca)
* la ligne de commande java -classpath poi.jar;sybase.jar -jar indicateurs.jar
ca marche pas ca ???
Marsh Posté le 15-12-2004 à 17:42:14
non
- J'ai tous mes .jars dans c: (pour faciliter les commandes shell)
- mon manifest :
Code :
|
avec un retour à la ligne, dans un répertoire meta-inf dans l'indicateurs.jar
- et je lance bien avec cette ligne de commande.
Je comprends vraiment pas comment ça peut ne pas marcher...
Merci de ton aide et de la rapidité de tes réponses en tout cas
Marsh Posté le 15-12-2004 à 18:00:45
ReplyMarsh Posté le 15-12-2004 à 18:01:08
Bon j'ai réussi (:bounce mais en faisant un truc sans doute un peu crade :
j'ai inclus dans mon .jar les autres .jar décompressés, directement à la racine... Du coup avec un manifest par défaut ça passe nickel...
Quelqu'un pourrait m'expliquer pourquoi ça, ça marche et pas les commandes précédentes svp ? La différence m'échappe...
En tout cas merci bcp Benou pour ta patience
Marsh Posté le 15-12-2004 à 18:02:45
vérifie mais je crois que tu n'as pas le droit de décompiler les jar ... c'est pas compatible avec la license ...
et ca marche justement parce que là il trouve la classe.
Marsh Posté le 15-12-2004 à 18:04:47
Oui mais pourquoi ne la trouvait-il pas dans le cas d'un jar compressé ?
je ne vais de toute façon pas livrer le prog en l'état, quelques 5000 fichiers dans l'archive ça fait sale, mais je trouve "intéressant" que ça marche comme ça, alors qu'il me semblait que c'était équivalent
Marsh Posté le 15-12-2004 à 19:33:10
Zedar a écrit : Oui mais pourquoi ne la trouvait-il pas dans le cas d'un jar compressé ? |
ca c'est juste parce qu'on lui dis pas de la bonne façon => il cherche même pas dans le jar.
Marsh Posté le 15-12-2004 à 15:21:40
Salut,
Je reprends le problème que j'ai posé dans le topic Eclipse, mais qui ne semble finalement pas lié à Eclipse :
Mon application est un .jar qui utilise 2 jar externes (poi pour des classes en rapport avec Excel et sybase pour des requêtes SQL).
Hors j'ai un problème à l'exécution, il me dit :
où POIFSFileSystem est une classe contenue dans le poi.jar (et la première à être exécutée par mon programme dans la classe calculIndicateurs).
J'ai essayé de lancer avec un "java -classpath chemin\poi.jar;chemin\sybase.jar -jar indicateurs.jar" (où indicateurs.jar est mon programme).
J'ai ensuite essayé de construire mon jar en modifiant à la main le manifest.fm en spécifiant un Class-Path: . poi.jar sybase.jar, comme je l'ai vu dans d'autres topics traitant du sujet.
Mais ça n'a rien changé.
Quelqu'un aurait-il une idée pour me sortir de là svp? Je me vois mal expliquer à mes utilisateurs qu'il faut installer Eclipse pour pouvoir lancer mon appli