Java et .jar ?

Salut,

J’utilise Eclipse 3.0 pour coder en Java. J’ai fait un petit programme pour un pote, j’aimerai lui filer bien sûr.

J’export mon projet en .jar (sachant que je sais pas vraiment a quoi ca correspond, je connais les bases de la poo mais rien de “ce qu’il y a autour”).

Je le lance avec ma machine java, il me dit qu’il trouve pas la class main dans “l’archive”… alors qu’elle est dedans.

Je comprend vraiment pas, je pense avoir bien tout indiqué dans les options de l’export.

Quelqu’un qui connait Eclipse peut me filer un coup de patte svp ??

Merki.

je connais pas eclipse mais je sais comment marche les .jar en gros, pour que ca fonctionne, il faut que le fichier manifest. soit present dans le jar, et qu’il indique quelle classe dans le jar contient le main. apres, pour le faire avec eclipse, je sais pas

muep, javais vu ça, et j’ai aussi verifié le contenu du manifest, il est bon, il cible bien mon main… capte pas

Pourrais-tu nous donner le contenu de ton fichier META-INF/MANIFEST.MF ?
Sinon, pour information, un .jar n’est rien d’autre qu’un fichier compressé (genre ZIP) contenant des métadonnées (le manifeste), les classes java, et éventuellement tout autre type de fichiers (les sources par exemple, des images pour le programme, etc.).
C’est le même principe que pour les fichiers .war, qui contiennent la webapp d’une application web pour tomcat.

tu le lances comment exactement ton programme de ton jar ??? parce que des fois il faut lui filer quelques options pour que ça marche

bah je le lance en faisant  /ouvrir avec/javaw ou demarrer/exec/cmd/javaw nom_du_prog…

machine java quoi
Contenu du .jar

3 class, dont mon Classmain.class
.project
.classpath
MANIFEST.MF

Contenu du manifest :

Manifest-Version: 1.0
Main-Class: Classmain

[quote]tu le lances comment exactement ton programme de ton jar ??? parce que des fois il faut lui filer quelques options pour que ça marche[/quote] Normalement, il faut faire “java -jar monFichierJar.jar”. Vu que son message d’erreur c’est du genre “main not found”, je doute que ce soit un problème de ligne de commande.

Sinon, tu es sûr que le manifeste pointe vers une classe Java qui possède bien la méthode main bien orthographiée (ie public static void main(String[] args) { … } ) ?

[quote]bah je le lance en faisant  /ouvrir avec/javaw ou demarrer/exec/cmd/javaw nom_du_prog…

machine java quoi
Contenu du .jar

3 class, dont mon Classmain.class
.project
.classpath
MANIFEST.MF

Contenu du manifest :

Manifest-Version: 1.0
Main-Class: Classmain
----[/quote]As-tu essayé de taper la ligne de commande (en mode DOS ou bash selon ton OS) : “java -jar xxx.jar” plutôt que de l’exécuter au travers d’Eclipse ?
Sinon, le Classmain.java contient bien le public static void main(String[] args) ? (oui, je sais, je me répète )

Ouvre ton jar avec un décompresseur style winzip et vérifie que le manifest est bien dans le dossier meta-inf et pas à la racine de l’archive. Vérifie aussi la casse (c’est tout en majuscule pour meta-inf/manifest il me semble).

Petite info en plus: quand ça marchera, tu pourras en plus faire de ton jar un auto-exécutable: tu double cliques et ça se lance, plus besoin de ligne de commande!

Merciii !

Ca marche java -jar… javaw ne marche pas en fait (je connais meme pas la difference entre les 2…)

Merci, bonheur, chaleur.

Edit : comment tu fais un auto_exec avec un .jar? juste bouton droit propiete etc ?

Ce message a été édité par Chateau_Dur le 05/07/2004

[quote]Merciii !

Ca marche java -jar… javaw ne marche pas en fait (je connais meme pas la difference entre les 2…)

Merci, bonheur, chaleur.

[/quote] javaw = java mais avec la console en moins. En gros, tu n’as pas d’affichage (genre les System.out.println) qui s’afficheront.

Ok merci pour l’info.

Et concernant l’auto-exec comment sa se passe, je trouve pas ou rajouter les parametres pour le java ds les proprietes de l’archive oO

[quote][quote]tu le lances comment exactement ton programme de ton jar ??? parce que des fois il faut lui filer quelques options pour que ça marche[/quote] Normalement, il faut faire “java -jar monFichierJar.jar”. Vu que son message d’erreur c’est du genre “main not found”, je doute que ce soit un problème de ligne de commande.

Sinon, tu es sûr que le manifeste pointe vers une classe Java qui possède bien la méthode main bien orthographiée (ie public static void main(String[] args) { … } ) ?
[/quote] ouais ben voilà, c’est bien ce qu’il me semblait, il fallait le lancer correctement en ligne de commande, tout simplement !!!

en effet, sinon j’ai cherché sur le net pour faire un auto exec, ca à l’air d’etre un joyeux boxon , quelqu’un a une ruse simple ?

hop, ca m’interesse aussi de savoir comment faire qu’un jar soit autoexecutable !

associer l’extension .jar avec java ??

faire un fichier batch qui dit “java -jar xxx.jar” non
Sinon, sur Windows, il y a bien moyen d’affilier tous les fichiers .jar à l’application “java -jar”, comme par exemple un fichier .html est associé à IE…

[quote]hop, ca m’interesse aussi de savoir comment faire qu’un jar soit autoexecutable ![/quote] Il me semble qu’avec les derniers runtimes ça se fait tout seul, sous windows , au moment de l’install.
Sinon, il existe effectivement des solutions sur internet pour soit “compiler” un jar en .exe, soit utiliser un “lanceur.exe”  configuré via un fichier ou pour un service windows

[quote]Il me semble qu’avec les derniers runtimes ça se fait tout seul, sous windows , au moment de l’install.[/quote]Ouaip. En fait, il associe les fichiers .jar avec javaw. Il suffit de double-cliquer sur l’archive pour que la class main spécifiée par le manifest soit lancée. Mais comme javaw n’affiche pas la console, faite gaffe à ne pas utiliser cette fonctionalité si vos programmes on besoin de la console.

Sinon, il suffit de faire un script de lancement correspondant à l’OS utilisé. Par exemple sous windows, il suffit de mettre la ligne suivante dans un simple fichier text en changeant son suffixe en .bat
java -jar monSuperJar.jar

Ce message a été édité par Sempai le 08/07/2004