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 ??
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
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.
[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!
[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 !!!
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