(java) : problème de jar

Sandrine1327 -  
sandul Messages postés 4013 Statut Membre -
Bonjour,

j'ai un petit soucis pour exécuter mon .jar.
Avant de poser la question sur ce forum, j'ai fait de nombreux tutoriels, mais je ne trouve pas.
Donc pour prendre le programme le plus simple possible :

public class ClassePrincipale
{
public static void main(String [] args)
{System.out.println("grrr !");}
}

que je mets dans le répertoire Projet.
J'ai un manifest MANIFEST.MF :

Main-Class: ClassePrincipale

avec un retour à la ligne et j'exécute la commande :

jar cvmf MANIFEST.MF Programme.jar *

Mon jar se crée et quand je l'exécute, il me dit :

Exception in thread "main" java.lang.NoClassFoundError : Programme.jar
Caused by ...
Could not find the main class : Programme.jar. Program will exit

Je suis un peu désespérée, quelqu'un peut m'aider ?

Merci !
A voir également:

2 réponses

sandul Messages postés 4013 Statut Membre 723
 
Salut,

Est-ce que ClassePrincipale a été déclarée dans un package? Dans ce cas, rajouter son chemin dans le .MF. Exemple:
Manifest-Version: 1.0
Main-Class: com.sandrine.test.ClassePrincipale


Sinon, regarde dans le jar (tu peux l'ouvrir par exemple avec WinRar) pour vérifier que là dedans il y a ce que tu attends:

META-INF
|--MANIFEST.MF
com
|--sandrine
|----- test
|----------ClassePrincipale
++
1
sandul Messages postés 4013 Statut Membre 723
 
Je viens de regarder encore une fois l'erreur... Tu lances probablement sans l'option -jar ?
java -jar monJar.jar
0
Sandrine1327
 
En fait j'ai réussi à le faire marcher avec un fichier.
Finalement le problème c'est qu'il fallait que les fichiers soient dans le répertoire courant et non dans des sous répertoires. (Enfin c'est ce que je crois, ca c'est mis à marcher tout d'un coup).
En tout cas je suis embetée parceque je dois faire un jar sur un gros projet java dans lequel il y a pleins de packages.
J'ai essayé avec Eclipse aussi, mais j'ai toujours le problème où il me dit qu'il ne trouve pas le main...
Pourtant, je remplis bien le manifeste, et je mets bien le -jar.
0
sandul Messages postés 4013 Statut Membre 723 > Sandrine1327
 
Exemple de manifest
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.3.0 (IBM Corporation)
Main-Class: com.displanis.server.setup.ServerLaunch
Class-Path: . connector.jar com.ibm.mq.jar ojdbc14.jar jni.jar xercesI
 mpl.jar xml-apis.jar log4j-1.2.14.jar jdom.jar jasperreports-2.0.4.ja
 r itext-1.3.1.jar commons-logging-api-1.0.2.jar commons-logging-1.1.j
 ar commons-digester-1.7.jar commons-collections-3.0.jar commons-dbcp-
 1.2.1.jar commons-pool-1.2.jar jtds-1.1.jar jsiv-2.5.0.jar activation
 -1.1.jar commons-beanutils-1.7.0.jar commons-codec-1.3.jar commons-lo
 gging-1.1.jar jaxws-api-2.0.jar jaxen-1.1-beta-9.jar mail-1.4.jar saa
 j-api-1.3.jar saaj-impl-1.3.jar spring-1.2.6.jar stax-api-1.0.1.jar w
 sdl4j-1.6.1.jar wstx-asl-3.2.0.jar xbean-2.2.0.jar xbean-spring-2.8.j
 ar xfire-aegis-1.2.6.jar xfire-annotations-1.2.6.jar xfire-core-1.2.6
 .jar xfire-java5-1.2.6.jar xfire-jaxws-1.2.6.jar xfire-spring-1.2.6.j
 ar xfire-jsr181-api-1.0-M1.jar XmlSchema-1.1.jar commons-httpclient-3
 .0.jar org.mortbay.jetty-5.1.3.jarxfire-jaxb2-1.2.6.jar jaxb-api-2.0.
 jar jaxb-impl-2.0.1.jar jaxb-xjc-2.0.1.jar 


Si beaucoup de jars, tu feras attention à couper les lignes au caractère 78 et de commencer les lignes suivantes par un espace.

Par la suite, je te recommande d'utiliser Ant pour créer la distribution finale, il est bien intégrée sous Eclipse. Il suffira de faire un double clic sur la tâche que tu veux faire et il va l'exécuter vite-fait. Tu peux copier ton manifest quelque part dans ton projet (dans un folder, pas un package), et dire à Ant de l'utiliser au moment de la création du jar.

++
0
sandrine1327 > sandul Messages postés 4013 Statut Membre
 
Merci beaucoup, ca marche !!
0
sandul Messages postés 4013 Statut Membre 723 > sandrine1327
 
Ya're welcome :=)
0