.JAR erreur

fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008 - 4 mars 2008 à 17:03
 Utilisateur anonyme - 9 mars 2008 à 10:58
Bonjour à tous,

Je travaille sous Eclipse. Mon projet s'appel "backup". ma class principale s'appelle "Backup" (ellse se trouve dans le package "principal").
J'exporte vers un .JAR
je précise la class qui contient mon main().
Il me crée un .JAR

Seulement quand je l'éxécute il me met le message d'ereur : "Could not find the main class. Program will exit."
Or mais version de JRE sont bien les mêmes dans Eclipse et  sous windows.

Deplus quans je compile en test sous Eclipse (avec la fleche verte) il n'y a aucun problème.

Quelq'un a t-il une solution ? merci.

24 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 mars 2008 à 18:06
Salut,

tu as bien renseigné cette classe (celle qui contient le main) dans le champ "Main-Class" du fichier MANIFEST.MF de ton jar afin de rendre ton jar exécutable ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
4 mars 2008 à 18:10
En fait je n'ai pas toucher au manifest, je ne sais pas trop ce que c'est.
J'ai choisit l'option générer manifeste en pensant que je n'avais pas besoin de m'en occuper
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 mars 2008 à 18:48
Salut,

il faut que tu te documentes sur les manifest et le champ Main-Class

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Utilisateur anonyme
5 mars 2008 à 16:12
Quand tu utilises la fonctionnalité "Export" sous Eclipse pour faire un JAR, tu dois lui préciser l'endroit où se trouve la classe qui contienne la méthode main pour qu'il produise un manifeste avec le champ "Main-Class" renseigné correctement. Regarde dans la dernière fenêtre qui s'affiche avant de finir la génération de ton JAR, cette fenêtre s'appelle "JAR Manifest Specification". Tout en bas, il y a écrit :
"Select the class of the application entry point:
 Main class:
".
Clique sur le bouton "Browse..." et indique lui où se trouve ta classe qui contient la méthode main, ce n'est pas bien dur.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
5 mars 2008 à 16:17
Je vous remercie mias je génère automatiquement le manifest donc théoriquement je n'ai pas à m'en occuper  nan ?
Et je précise déjà bien mon main gouessej ...

Donc je ne voias vraiment pas pourquoi ???
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 mars 2008 à 16:34
Salut,

"Je vous remercie mias je génère automatiquement le manifest donc théoriquement je n'ai pas à m'en occuper  nan ?"
>Oui pour faire un simple jar.... mais pour le rendre executable aux yeux de la JVM il faut lui dire quelle classe contient le main... elle ne fera pas cette recherche pour toi donc il faut lui donner un coup de pousse...

[auteur/GOUESSEJ/684669.aspx gouessej]> Je te conseil fortement d'oublier cette solution et de passer uniquement par les scripts ant (build.xml) qui ont moins de contraintes, sont beaucoup plus puissant et plus simple d'utilisation....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Utilisateur anonyme
5 mars 2008 à 19:34
[auteur/FGRAFF/1161763.aspx fgraff]
, non, tu dois t'en occuper sinon je ne te le préciserais pas! J'ai déjà eu le même message d'erreur et je sais très bien pourquoi ça t'arrive. [auteur/TWINUTS/43739.aspx Twinuts] et moi t'avons déjà dit que tu dois indiquer où se trouve ta classe main.

[auteur/TWINUTS/43739.aspx Twinuts], tu sais très bien que je ne me sers pas d'Eclipse pour faire mes archives Java, je l'ai fait une ou deux fois pour aider un étudiant. Je n'ai jamais utilisé Eclipse pour faire les archives Java pour T.U.E.R, j'ai utilisé la bonne vieille ligne de commande, des scripts shell puis depuis quelques mois des scripts ANT non seulement pour compiler le jeu, produire l'archive Java, lancer le jeu et les programmes intermédiaires (qui produisent certains fichiers de données et qui permettent de tester l'affichage des modèles au format MD3) et enfin produire l'archive compressée au format ZIP contenant l'ensemble des sources du jeu avec les fichiers de données canoniques non générables.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 10:28
On doit mal se comprendre lol.
Je fais générer automatiquement le manifest (c'est la première option) et dans le champs en bas de la derniere fenetre je précise évidemment ou se trouve ma class main donc ou est ce que je dois la préciser d'autre si ca ne suffit pas ???
0
Utilisateur anonyme
6 mars 2008 à 10:32
Ok, tu utilises bien Eclipse, le problème ne vient pas de là. Ouvre ton JAR avec un archiveur et regarde si Eclipse a bien mis ta classe main dedans.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 10:39
Donc voila dans l'archive j'ai un dossier META-INF
dedans il y a mon manifest qui contient :
Manifest-Version: 1.0
Main-Class: principal.Backup

Sinon dans l'archive il y a tous mes dossiers (mes packages)
le .classpath, .project, org.eclipse.jdt.ui.prefs, mes images , mon fichier xml, un un .exe que j'utilise.

(Merci pour votre aide au fait !!!)
0
Utilisateur anonyme
6 mars 2008 à 12:32
Le fichier manifeste semble bon. Regarde si le fichier principal.Backup.class est bien dans ton JAR. Es-tu sûr que cette classe contient bien une méthode public static void main(String[] args){...} ?

D'autre part, un fichier .exe, ce n'est pas portable, ça ne sert à rien de faire du Java si tu fais des choses qui ne peuvent tourner que sous Windows. Ca veut dire que ton programme ne marchera ni sous Unix Solaris, ni sous Linux, ni sous Macintosh.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 12:39
Oui principal.Backup.class est bien dans mon .JAR ...
Sinon mon exe ne sert que sous windows. En fait sous windows plus précisément pour les utilisateurs de Outlook, ce la pause problème puisque je ne peux pas copier les fichier outlook quand le programme est lancé. je dois donc le fermer. J'ai fai un .bat puis un .exe pour ca. mais bon s'il y a une possibilité en java pourquoi pas ?
0
Utilisateur anonyme
6 mars 2008 à 12:47
Je crois savoir d'où ça vient mais je vais avoir du mal à t'aider. Une des ressources que tu appelles dans ton programme n'arrive pas à être chargée donc ça fait échouer le chargement de la classe. Il arrive que certains IDE paramètrent le JAR de façon à ce que tu puisses le lancer en les utilisant mais pas autrement.

Tu fais appel à org.eclipse.jdt.ui.prefs, il faut donc trouver un moyen pour mettre dans ton JAR ou bien à côté les ressources nécessaires qui sont chargés là dedans sinon ça ne va pas marcher.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 13:44
Enfin honnetement je ne sias pas de quoi ca vient org.eclipse.jdt.ui.prefs et s'il y a moyen de le générer sans Eclipse je vote pour !
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 16:31
Ext ce qu l'un d'entre vous accepterais que je lui passe mon archive pour la tester (c'est pas tres gros 300ko) ?
0
Utilisateur anonyme
6 mars 2008 à 16:52
Vire tout simplement toute référence à org.eclipse.jdt.ui.prefs dans tes sources sinon tu auras le même problème en créant l'archive sans Eclispe.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 16:55
En fait je m'en servai pas c etait dans les sources de JDOM mais j'ai tout viré il reste plus que le .JAR de JDOM
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
6 mars 2008 à 17:10
Bon alors voila j'ai fait "java Backup" pour essayer a la main (c'est ma classe qui contient le main) et voila le reultat -->



Exception in thread "main" java.lang.NoClassDefFoundError: Backup (wrong name:
rincipal/Backup)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 mars 2008 à 19:15
Salut,

bon pour faire simple :
tu créer un fichier nommé
'build.xml' (à la racine de ton projet) ensuite tu y colles le contenu
ci-dessous (pense à adapter le champs main-class) enfin tu fais un clic
droit dessus (apres sauvegarde)-> Run As ->Ant Build et pouf le
jar est généré avec Ant....

<?xml version="1.0" encoding="UTF-8"?>

   
   
    <target name="packaging">
        <delete file="${jar.name}" />
        <!-- =================================================================== -->
        <!--                    Generation de l'archive jar                      -->
        <!-- =================================================================== -->
   
    <jar jarfile="${jar.name}" basedir="./bin"> <!-- remplace
le ./bin si tes classes ne sont pas dans le rep bin -->
            <manifest>
               
               
            </manifest>
        </jar>
    </target>    

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
fgraff Messages postés 19 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 15 avril 2008
8 mars 2008 à 14:53
Bon alors en fait j'ai trouvé d'où vient mon problème.
il vient de JDOM tou fonctionne bien (sauf les images) quand je n'utilise pas JDOM avez vous une idée ?
et ppour les images ?
0
Rejoignez-nous