Class-Path qui disparaît dans MANIFEST.MF
Bonjour,
Je développe actuellement sous Windows et avec Eclipse une application qui utilise quelques librairies externes. Je dois livrer mon application sous la forme d'un jar exécutable et sonc j'utilise l'outil d'export d'Eclipse.
Dans une première partie du développement, je n'avais pas encore de librairies à utiliser et le jar se lançait très bien via java -jar .\bin\Appli.jar.
Néanmoins, depuis que j'ai ajouté les librairies, cela ne marche plus... J'ai bien essayé de faire java -cp .\lib\a.jar;.\lib\b.jar -jar .\bin\Appli.jar, mais j'obtiens le classique ClassDefNotFound.
Après beaucoup de recherches, j'ai découvert qu'on pouvait se passer de l'argument cp lors de l'exécution en renseignant toutes les librairies dans le fichier MANIFEST.MF.
Celui que me générait Eclipse ressemble à cela :
Citation:
Manifest-Version: 1.0
Main-Class: com.projet.Main
J'ai donc décidé de le modifier :
Citation:
Manifest-Version: 1.0
Main-Class: com.projet.Main
Class-Path: lib\a.jar lib\b.jar
Mais là où le problème se pose, c'est que lors de l'exportation par Eclipse, ce dernier m'enlève la ligne Class-Path...
J'ai essayé de créer le jar par moi-même avec jar cmf MANIFEST.MF Appli.jar <mes_sources>, mais le résultat est le même, la ligne Class-Path disparaît.
Quelqu'un sait-il pourquoi ou aurait une solution autre pour que je fasse fonctionner mon jar ?
Merci.
Solution "bidouille" ... ou pas
Salut,
Je viens de rencontrer ce problème et en cherchant sur google, ce post sans réponse arrive en seconde position donc je me permets d'y répondre, un peu, très tardivement.
Donc je n'ai aucune raison sur le pourquoi du comment de ce problème mais j'ai une possible solution. Est-ce la meilleure ? Je ne pense pas mais ça en est une.
Comme tu es sous Windows, je prendrais cet OS comme exemple.
La seule chose dont tu ais besoin est le logiciel d'archivage gratuit 7-Zip.
1) Avec 7-Zip, dézippe le jar que Eclipse t'as créé.
2) Ouvre le fichier "MANIFEST.MF" situé dans le dossier "META-INF". (ce dossier est à la racine)
3) Modifie ce fichier de façon propre à un fichier Manifest (pour ton cas, en rajoutant les lignes manquantes)
4) Compresse avec 7-Zip de nouveau la totalité des fichiers/dossiers qui avaient été dézippés auparavant (au format ".zip").
5) Modifie l'extension ".zip" par ".jar" (je l'ai fait avec la commande "ren" dans un terminal DOS).
6) Plus rien c'est fini. :ccool:
Voila, je pense que cela devrait suffire à résoudre ton problème, ça a suffit à résoudre le mien. Pense bien à placer les jars de ton classpath dans le même dossier que ton jar "principal".
En espérant que cela pourra en aider d'autres...