Executable Java

[Résolu/Fermé]
Signaler
-
 rantanplansuisse -
Bonjour,

Qui peut me donner une explication simple ou une bonne adresse ou je peux en trouver une bonne marche à suivre pour créer un executable en java.

Merci d'avance.

Hélène

Hélène

25 réponses

Tiens, comme ce lien vient en premier dans la recherche Google sur le message "Failed to load Main-Class manifest attribute from xxx", je vais mettre le problème (et sa solution) que j'ai rencontré aujourd'hui...

J'ai trouvé un fichier jar de librairie (quickhull3d pour ne pas le nommer) qui a une classe de test (avec une méthode main() dedans, bien sûr).

J'ai essayé de lancer la classe avec la commande :
java -jar quickhull3d.jar quickhull3d.SimpleExample
et j'ai eu le message ci-dessus !

Je me suis gratté la tête un moment, j'ai cherché sur Internet (et trouvé cette page !), en vain (mais je ne suis pas le seul avec ce problème).

Et finalement, avec un éclair de génie (ou plutôt, de lucidité au-delà de la brume de stupidité qui me cachait la solution, que je connaissais pourtant...) j'ai essayé :
java -cp quickhull3d.jar quickhull3d.SimpleExample
et ça a fonctionné !

Bon, quelle est la différence ?

La première commande dit à Java de prendre le fichier .jar, d'ouvrir le fichier MANIFEST.MF dans le répertoire META-INF et de lire la ligne
Main-Class: package.of.class.with.Main
qui est sensée donner le classpath vers la classe ayant une méthode main() à exécuter.
Java a allègrement et silencieusement ignoré mon path... Et le jar n'ayant pas l'info requise, j'ai eu cette erreur.

La deuxième commande dit juste d'utiliser le jar comme classpath et d'aller y chercher la classe dont je donne le package et nom.

Différence subtile mais importante !
J'espère que cette information sera utile à quelqu'un.
33
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

pour une fois que CCM ne servent pas qu'a recueillir les pleures de noobs infoutus d'utiliser google...

Merci mille fois PhiLho pour ta solution, j'avais le même pb que toi et c'est bien le "-jar" qui me posait pb.

java -cp <NomDeMonJar>.jar <nom.des.packages.et.sous.package.separes.par.des.points>.<NomClassMain>

java -cp monjar.jar eu.societe.batch.Start

Notez l'absence de ".class" en fin de ligne.
Dans eclipse à l'export suffit de lui indiquer la MainClass monpackage.laclasse.
expliquer plus comprensiblement
Merci, ça marche nickel

Le package, c'est le nom du fichier jar c'est ça ?
et la classe, c'est quoi ?

Bonsoir,
Il suffit de créer une archive (.jar) exécutable.
a+

Bonsoir,
En gros, il faut créer un fichier manifest.txt contenant la ligne:
Main-Class: classePrincipale

Puis créer l'archive .jar sans oublier l'option pour l'inclusion du fichier manifest (cf jar -help), puis chmod +x monFichier.jar (sous linux)
Voilà l'exécutable est créé, pour l'exécuter:
./monFichier.jar
Sous win, on peut cliquer directement sur le fichier .jar ou on crée un fichier .bat contenant la ligne:
java monFichier.jar
Toute la documentation est reprise de façon fort complète sur:
http://java.sun.com/docs/books/tutorial/jar/index.html
a+
Ok, C'est fait, mais que dois-je faire après.
D'après ce que j'ai compris, il faut télécharger la JDK, faire un document MANIFEST et un fichier bat.
Cependant, tous les exemples que je possède ne sont pas très explicite, je souhaite trouver un document qui me donnerait une marche à suivre facile à comprende.

Merci de votre aide.
Bonne année
moi ausi j'ai le même problème mais essaye une recherche sur google "InstallAnywhere" bonne chance !
Merci Philtrain,

cependant, en cliquant sur le fichier jar, j'ai une boite de dialogue qui dit que "Windows ne peut pas ouvrir le fichier car il doit connaître le programme utilisé pour sa création".

Est-ce parce que je doit obligatoirement avoir la JRE ?.

Merci d'avance pour ta réponse et je te souhaite une bonne année 2004.

Bonjour,
cette erreur provient vraissemblablement du fait que la classe principale n'est pas bien spécifiée dans le fichier manifest.txt. Il faut veiller à bien écrire:
Main-Class: [package].[sous-package].classePrincipale

- package est le nom du package contenant la classe principale,
- sous-package est le nom du sous-package éventuel contenant la classe principale
- classePrincipale est le nom de la classe principale sans l'extension .class
Victoire !

Tout fonctionne, encore merci.

A Bientot
Plz help

I execute my Test.jar then error display

Failed to load Main-Class manifest attribute from c:\PDA\Test\dist\Test.jar

Plz give me solution of this error

Thank you

Bonjour Hélène,
Effectivement, pour lancer un programme java, il faut que la machine virtuelle java soit installée. On peut la télécharger gratuitement sur http://www.java.sun.com

Merci pour tes bons voeux et à toi aussi je te souhaite une bonne année 2004
a+
Hello, j'ai encore un peu besoin de ton aide.

La jre est installée, j'ai créer mon fichier jar, j'ai complété le fichier manifest, cependant, maintenant j'ai un message qui dit :
"Failed to load Main-Class manifest attribute from F:\Test\Test.jar

Pourrais-tu encore un fois éclairer ma lanterne.

Merci d'avance et bonne fin de journée.
Merci Philitrain de répondre à mes questions, je t'en suis vraiment reconnaissante.

Je vais essayer de modifier mon fichier MANIFEST.
Cependant, chaque fois que je modifie quelque chose dans ce dernier et que j'execute l'application le fichier MANIFEST ce vide.
C'est rageant.

Amitiés.

bonjour
qui peut m'aider pour faire une transmission d'un caractere d'un pc à une caisse enregistreuse a travers le port serie RS-232 en utilisant un programme en java.
merci

bonjour
qui peut m'aider pour faire une transmission d'un caractere d'un pc à une caisse enregistreuse a travers le port serie RS-232 en utilisant un programme en java.
merci

bonjour,
qui peut m'aider pour faire une communication reseux entre pc et une caisse enregistreuse uniwell en utilisant la programmation java.
merci d'avance
Ca reste quand meme du bytecode!!
mais pour generer du code machine avec java il ya gcj mais c pas encore top top
Utilisateur anonyme
Bonsoir bolosse,
Il ne faut pas oublier qu'un des intérêts de java est d'être un langage multi-plateforme. Archiver ses classes dans un jar exécutable permet justement de le faire fonctionner sur plusieurs OS, à condition bien sûr que la jvm soit installée.
a+

bonjour bolosse,
si vous avez une idee expliquez mois d'avantage .
merci.

Bonjour,
gcj est actuellement en cours de développement. Il supporte awt mais pas encore swing.
Voici un lien:
http://programatrix.free.fr/java/001_tuto_gcj.html
a+

salut phltrain,
merci de m'avoir répondre jai contacté le cite et c'est facile à suivre .j'aimerais s'avoir comment utiliser ça pour faire communiquer un pc et une caisse enregistreuseen reseaux surtout que je connais pas bient la programmationt java .
merci de votre aide.

salut phltrain,
merci de m'avoir répondre jai contacté le cite et c'est facile à suivre .j'aimerais s'avoir comment utiliser ça pour faire communiquer un pc et une caisse enregistreuse en reseaux surtout que je ne connais pas bient la programmationt java .
merci de votre aide.
Bonjour à tous,
je suis novice dans les web services et j'ai besoin d'utiliser des .jar mais quand je clique dessus, il me dit comme probleme "Failed to load Main-Class manifest attribute from nom_dossier" mais pourtant ce sont des .jar de axis que je prends juste, j'ai aussi déja installé le JRE 6 de java.

Pourriez vous me dire ce que je dois faire pour résoudre ce problème?
Merci beaucoup
Bonjour,
pour quelle utilisation tu en as besoin?
si c'est pour les utiliser dans tes projets c'est pas comme ca qu'il faut le faire cela depend de ton environnement de travail...sinon pour executer le contenu tu peux utiliser le cmd avec la commande :java -jar leNomDeTonJar
Bon courage!