IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

pb exécution jar


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 29
    Points
    29
    Par défaut pb exécution jar
    bonjour,

    j'ai créé un programme pour lequel j'ai fait un jar exécutable.

    ce programme contient 5 classes, dont une qui est définit dans le manifest comme la classe principale qui nécessite des paramètres à l'éxécution.

    je génère le jar qui contient les .class et mon .mf, je le lance en ligne de commande, il commance la traitement mais s'arrête lorsqu'il appelle un autre classe .... sans me générer d'erreur.

    mon programme fonctionne parfaitement, en ligne de commande avec les .class

    j'ai rencontré le même problème lorsque j'avais oublié de définir le classpath avec les .class. car j'ai besoin de jar externes

    mais j'ai beau définir un classpath dans le manifest ou dans la ligne de commande, le resultat est le même, il entre pas dans la classe appelée par la classe principale (c'est cette deuxième qui appelle les trois autres)...

    quelqu'un aurait une solution à mon problème, ou une petite idée ???

    merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par mimi31110
    il commance la traitement mais s'arrête lorsqu'il appelle un autre classe .... sans me générer d'erreur.
    Tu n'aurais pas un catch() vide qui traine et qui te cacherait l'exception par hasard ???

    a++

  3. #3
    Nouveau membre du Club

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    si, mais la seule façon qu'il a de générer une erreur c'est qu'il n'y ai pas assez d'arguments. Or il m'affiche à l'écran les arguments (ils y sont tous) puis s'arrête...

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    dans ton catch fais un ptit printStackTrace, t'auras ptet plus d'info à nous communiquer ....

    [EDIT] parce que si ton catch c'est un catch(Exception), tu attrape toutes les exceptions. Pas seulement celle levée si tu n'as pas assez de paramètres
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  5. #5
    Nouveau membre du Club

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    ce n'est pas une erreur !!! mon catch le fait le printStackTrace

    il n'y a pas d'erreur, c'est l'exec qui s'arrête ...

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben alors c'est que ton prog s'arrete normalement.

    Autremement dit il fait ce que tu lui dis de faire...

    Je sais pas moi, montre nous un bout de code qui ne marche pas selon toi. car débugger un code qui ne fait pas d'erreur c'est tendu

    [EDIT] enfin si tu dis que ça marche en ligne de commande ... t'as forcement une exception que tu ne vois pas ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    Nouveau membre du Club

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    voilà ce qui ce passe quand je lance le programme directement en ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    D:\XML2DOC\Bin>java -classpath "D:XML2DOC\Bin;C:\Program Files\OpenOffice.org 2.0\program\classes\unoil.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\jurt.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\ridl.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\juh.jar" Xml2Doc "C:\Untel.xml" "C:\Collaborateur.xsl" "pdf" "C:\Untel.pdf"
    Xml2Doc 2
    Fichier XML : C:/Untel.xml
    Fichier XSL : C:/Collaborateur.xsl
    Format : pdf
    Fichier en sortie : C:/Untel.pdf
    Entree dans le classe
    Fin de programme
    de "Xml2Doc 2" à "Untel.pdf", c'est dans la classe principale
    "Entree dans la classe" appartient à la classe appelé par la classe principale
    "fin de programme" est encore dans une autre classe

    dans ce cas là tout marche bien.

    avec les même .class, je crée le jar et je l'éxécute comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    D:\XML2DOC\Bin>java -classpath "D:\XML2DOC\Bin;C:\Program Files\OpenOffice.org 2.0\program\classes\unoil.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\jurt.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\ridl.jar;C:\Program Files\OpenOffice.org 2.0\program\classes\juh.jar" -jar XML2DOC.jar "C:\Untel.xml" "C:\Collaborateur.xsl" "pdf" "C:\Untel.pdf"
    Xml2Doc 2
    Fichier XML : C:/Untel.xml
    Fichier XSL : C:/Collaborateur.xsl
    Format : pdf
    Fichier en sortie : C:/Untel.pdf
    et je constate qu'il n'y a pas d'erreur et que le programme s'arrête ...

    voilà, si je suis plus claire ...

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Deux remarques :
    • Avec l'option -jar, seul la valeur du Class-Path défini dans le manifest est utilisé. L'option -classpath est ignoré...
    • Montre nous le code en question... parce que sans erreur et sans code ca risque d'être un peu compliqué...
    a++

  9. #9
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je crois qu'il faut plutot ajouter ton jar à ton classpath et lancer sans le -jar

    mais bon je ne pense pas que ton pb vienne de là ... essaie toujours

    [EDIT] ok... toujours faire confiance à AdiGuba
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  10. #10
    Nouveau membre du Club

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    alors, voici la classe principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    public class Xml2Doc 
    {
    	/**
             * @param args
             * les arguments sont : 
             * 1) fichier XML 
             * 2) fichier XSL
             * 3) format du fichier final
             * 4) chemin et nom du fichier final
             * 5) nom macro1
             * 6) nom macro2...
             * @throws Exception 
             */
    	public static void main(String[] args) throws Exception 
    	{
    		if (args.length < 4)
    		{
    			System.out.println("Il n'y a pas assez d'arguments, il en faut au moins 4.");
    			System.out.println("Exemple : \"C:/fichier.xml\", \"C:/fichier.xsl\"," +
    					" \"PDF\", \"C:/fichierFinal.PDF\", \"Standard.test.main\", " +
    					"\"Gimmicks.ChangeAllChars.ChangeAllChars\", \"Gimmicks.Autotext.Main\"");
    			System.exit(1);
    		}
     
    		try 
    		{
    			System.out.println("Xml2Doc 2");
     
     
    			//remplacement de tous les \ par des /
    			for (int i = 0; i < (args.length) ; i++)
    			{
    				args[i] = args[i].replaceAll("\\\\", "/");				
    			}
    			//affichage des paramètre de l'application
    			System.out.println("Fichier XML : "+args[0]);
    			System.out.println("Fichier XSL : "+args[1]);
    			System.out.println("Format : "+args[2]);
    			System.out.println("Fichier en sortie : "+args[3]);
    			for (int n = 4; n<args.length ; n++)
    			{
    				System.out.println("Macro n°" + (n-3) + " : "+args[n]);
    			}
     
    			new XMLExported(args);
    		} 
    		catch (Exception e) 
    		{
    			e.printStackTrace();
    		}
    		finally 
           {
               System.exit(0);
           }
    	}
     
    }
    j'ai créer le fichier XML2DOC.mf suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Class-Path: C:\Program Files\OpenOffice.org 2.0\program\classes\unoil.jar C:\Program Files\OpenOffice.org 2.0\program\classes\jurt.jar C:\Program Files\OpenOffice.org 2.0\program\classes\ridl.jar C:\Program Files\OpenOffice.org 2.0\program\classes\juh.jar
    Main-Class: Xml2Doc
    je génère la jar commme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\XML2DOC\Bin>jar cmf XML2DOC.mf XML2DOC.jar *.class
    et j'ai lancé la commande suivant pour lancé le jar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    D:\XML2DOC\Bin>java -jar XML2DOC.jar "C:\Untel.xml" "C:\Collaborateur.xsl" "pdf" "C:\Untel.pdf"
    Exception in thread "main" java.lang.NoClassDefFoundError: Xml2Doc
    là, il ne trouve plus la classe principale

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par in
    je crois qu'il faut plutot ajouter ton jar à ton classpath et lancer sans le -jar

    mais bon je ne pense pas que ton pb vienne de là ... essaie toujours

    [EDIT] ok... toujours faire confiance à AdiGuba
    C'est une solution alternative : soit on lance avec le -jar et on utilise alors le Class-Path du manifest, soit on ajoute le jar dans le classpath et on spécifie le nom de la classe principale...

    Citation Envoyé par mimi31110
    j'ai créer le fichier XML2DOC.mf suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Class-Path: C:\Program Files\OpenOffice.org 2.0\program\classes\unoil.jar C:\Program Files\OpenOffice.org 2.0\program\classes\jurt.jar C:\Program Files\OpenOffice.org 2.0\program\classes\ridl.jar C:\Program Files\OpenOffice.org 2.0\program\classes\juh.jar
    Main-Class: Xml2Doc
    Tu ne dois pas utiliser le chemin complet vers les Jar (aie aie la portabilité), mais leurs chemins relatifs par rapport à ton jar principal...

    Enfin si tu n'as pas d'exception le problème doit venir de ta classe XMLExported...

    a++

  12. #12
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    mimi31110, je viens de lire ton message.
    J'ai eu exactement le même problème aujourd'hui au bureau. De mon côté, l'erreur venait de l'abscence du fichier config.xml (ou quelquechose d'approchant, je ne l'ai pas sous les yeux).

    Pour info, je travaille sous NetBeans pour lequel il suffit de remonter le JAR du répertoire dist dans le répertoire du projet. Dans celui-ci figurent tous les répertoires accessibles à l'adresse "./[....]" (c'est le répertoire d'exécution). Mais il comporte aussi un fichier xml indispensable.

    J'ai voulu faire migrer mon application et lorsque j'ai voulu faire un peu de ménage dans les répertoire, elle s'est mise à déconner : je n'avais plus que le splash screen fixe. En remettant ce fichier à sa place, j'ai réglé le problème.

    Essaye.
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

Discussions similaires

  1. Exécutable jar et jar externe
    Par helldog dans le forum Général Java
    Réponses: 11
    Dernier message: 13/04/2007, 00h33
  2. débutant: erreur exécution JAR
    Par sroux dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2006, 12h17
  3. Problème Exécution Jar
    Par barnoufal dans le forum NetBeans
    Réponses: 6
    Dernier message: 06/09/2006, 09h48
  4. Exécution jar : fonctionne "à moitié"
    Par Tentative dans le forum NetBeans
    Réponses: 12
    Dernier message: 12/06/2006, 19h55
  5. Débutant: exécuter .jar sur un Mac
    Par hvgentil dans le forum JBuilder
    Réponses: 3
    Dernier message: 05/07/2004, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo