[JAR] Class main not found

michaeljeru
[JAR] Class main not found

Voila, je travaille sous Eclipse, et j'ai l'habitude de créer des jar avec Eclipse, et ça se passait toujours sans problème. Maintenant, j'ai importe la librairie JDIC (et ses 3 jar) dans mon projets, et j'ai créé un manifest avec le chemin d'accès aux jar du JDIC

Le problème, c'est que maintenant, les JAR ne s'exécutent plus, puisque j'ai un message d'erreur :

"Could not find the main class. program will exit"

Voici le contenu de mon manifest :

Manifest-Version: 1.0
Main-Class: evolution.Interface
Class-path: lib/jdic_stub.jar lib/jdic.jar lib/packager.jar

Et pr l'arborescence de mon projet, c'est là :
http://img62.imageshack.us/img62/4643/eclipseworkspacesa4.jpg

Merci d'avance pour votre aide.

fredericmazue

Quote:
c'est que maintenant, les JAR ne s'exécutent plus

Quels jars ? les jars de JDIC devraient ils s'exécuter ?

Quote:
"Could not find the main class. program will exit"

Quelle main class ? De evolution, d'autre chose ?

Quote:
Class-path: lib/jdic_stub.jar lib/jdic.jar lib/packager.jar

En attendant que tu précises ta question, sur la capture d'écran que tu donnes, je ne vois pas que les jars en question résident dans le répertoire lib. Ceci expliquerait il cela :?:

Et puis tu sais, s'il faut être précis quand on pose une question ;) il faut aussi et surtout l'être quand on donne une directive à l'ordinateur.

Répertoire lib :?: :?: relatif ? absolu ? Il me semble que
Class-path: ./lib/jdic_stub.jar lib/jdic.jar ./lib/packager.jar
Serait beaucoup mieux. A condition que les jars soient dans lib, évidemment.

michaeljeru

ok. alors précisons les choses :
-il n'y a bien qu'un seul jar que j'exécute.

en lançant le jar en commande ms dos, j'ai obtenu un message d'erreur plus détaillé qu'en double cliquant sur mon jar :

Quote:
Exception in thread "main" java.lang.NoClassDefFoundError : org/jdesktop/jdic/desktop/DesktopException

Est ce que ça renseigne plus?

les 3 jars sont effectivement ajoutés dans le dossier lib de mon projet, dossier qui est exporté avec les autres lors de la création du jar.

Et si j'essaye de bidouiller, à savoir de mettre le jdic.jar dans le même dossier que le jar de mon projet, et donc que j'ajoute à mon jar un manifest avec la clause :
Class-Path : ~/jdic.jar

alors j'obtiens un autre message d'erreur :
invalid header field name : Class-Path

fredericmazue

Quote:
Est ce que ça renseigne plus?

Pour sûr. Il n'est donc plus du tout question de "the main class" mais d'une classe de JDIC qui n'est pas trouvée au démarrage.
Franchement ce que tu dis maintenant et ce que tu as hier sont deux choses qui n'ont rien (mais alors rien) en commun. Comment cela peut il se faire ?

Si elle n'est pas trouvée, c'est que le CLASSPATH n'est pas correct, mais ça tu le sais déjà je pense.

Quote:
les 3 jars sont effectivement ajoutés dans le dossier lib de mon projet

Si tu le dis...
Mais la capture que tu donnes ne montre pas que les jar soient dans le répertoire lib. Enfin bon, je n'insiste pas.
Quote:
Class-Path : ~/jdic.jar

La JVM ne comprends pas ~, ce qui est assez normal, surtout sous Windows (toujours si j'en crois ta capture)
Pourquoi pas tout simplement:
Class-Path : ./jdic.jar
michaeljeru

ok, bon en fait, maintenant, mon workspace a pas mal changer alors je remet un nouveau screenshot.

la différence, maintenant, c'est que la version du jdic que j'utilise est spécifique à plusieurs OS : windows, linux et sunOs

le jar jdic.jar est dans le dossier lib

En fait, ce que je veux, c'est qu'il aille chercher cette librairie jdic.jar dans le dossier lib au début de l'exécution. Ce qu'il ne va apparemment pas faire...

EDIT : je viens d'avoir une idée, qui est la bonne. en indiquant lib/jdic.jar, je me suis dit qu'il allait chercher le jar au chemin relatif /lib/jdic.jar dans le dossier où se trouve le jar exporté d'eclipse
donc bonne nouvelle, j'ai trouvé comment faire marcher à l'export

mais pr l'instant, la mauvaise nouvelle, c'est que je suis réduit à utiliser mon programme uniquement sur mon pc...

fredericmazue

Quote:
En fait, ce que je veux, c'est qu'il aille chercher

Qui il ?

Quote:
je viens d'avoir une idée, qui est la bonne. en indiquant lib/jdic.jar, je me suis dit qu'il allait chercher le jar au chemin relatif /lib/jdic.jar

Une idée ? Tu ne manques pas d'air. Je te l'ai dit dès mon premier post de mettre un répertoire relatif. C'est un plaisir de voir que tu tiens compte de ce qu'on te dit.
Quote:
donc bonne nouvelle, j'ai trouvé comment faire marcher à l'export

Bel exploit. Sinon tu as toujours la solution de créer ton jar à la main. Ca n'a rien de compliqué.
Quote:
mais pr l'instant, la mauvaise nouvelle, c'est que je suis réduit à utiliser mon programme uniquement sur mon pc...

Et bien renonce à mettre le classpath dans le jar et configure le à la volée dans ton application lors de son démarrage.