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 :

jar executable fonctionne mais pas trop


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut jar executable fonctionne mais pas trop
    bonjour,

    j'ai un petit problème avec un *.jar exécutable que je viens de générer.

    je developpe sous XP et avec Eclipse, j'ai réalisé un programme qui fonctionne bien sous eclipse. Maintenant j'aurai aimé l'exporter c'est pourquoi j'ai exporter mon projet Java en *.jar.

    j'ai regardé sur le forum pour savoir comment générer un *.jar, chose que j'ai réussi à générer. J'ai utilisé le MANIFEST.MF suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Main-Class: graphic.SGWindows
    Class-Path: poi.jar
    J'ai testé le jar (double clic) et il m'affiche bien mes fenêtres graphiques et JFileChooser lorsque je clique sur les boutons. Jusque là tout se passe comme prévues.

    Mais lorsque je lance à partir de l'interface graphique une application qui doit faire des traitements sur un fichier Excel, rien ne se passe, il n'y a pas de résultat pour le traitement demandé.
    J'utilise l'API POI pour lire les fichiers Excel.

    Après j'ai lancé le jar depuis la console et je m'aperçois qu'il me génére une exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDeFoundError : org/apache/poi/poifs/filesystem/POIFSFileSystem
    j'ai l'impression qu'il ne trouve pas l'api POI que j'utilise. Alors que j'ai bien ajouté l'api dans le BuilPath du projet et aussi dans le MANIFEST.MF.

    Si quelqu'un a une idée de l'erreur que j'ai commise, son aide me sera précieuse.

    tHanks

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Voir la ici !
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut tjrs pas compris l'erreur
    salut,

    j'ai regardé la FAQ que tu m'as donnée, mais je ne comprend pas trop l'erreur.

    j'arrive à lancer la classe contenant le main() en faisant un clic droit, puis runs as Java Application.

    ce que je ne comprend pas c'est que j'ai bien rejouté le poi.jar dans le buildpath (puisque ça fonctionne dans l'IDE).

    comme j'ai bien rajouté dans le MANIFEST.MF l'archive poi.jar qu'il doit utilisé Dans ce cas pourquoi il me génére alors une exception de class-path comme quoi il ne trouve pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 org.apache.poi.poifs.filesystem.POIFSFileSystem

    à vrai dire je ne comprend pas trop la différence entre buildpath et classpath.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Remarque : à la racine de mon projet Jave, j'ai créé un dossier "/META-INF" dans lequel j'ai mis le MANIFEST.MF et le poi.jar dans un sous dossier "/lib"
     
           +projet
           |__ +META-INF
                 |___MANIFEST.MF
                 |__+lib
                      |__poi.jar

    Merci de votre aide

  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
    ça serait pas plutot lib/poi.jar qu'il faudrait mettre dans le classpath ?
    "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
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    salut,

    j'ai essayé de mettre dans le MANIFEST.MF, le Class-Path : lib/poi.jar mais rien à faire, ça ne marche toujours pas.

    mais j'ai trouvé une solution alternative sur le net. Cette solution consiste à mettre les *.jar externes dans le dossier /ext du JDK et JRE. Dans mons j'ai mis le poi.jar dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Program Files\Java\jdk1.6.0\jre\lib\ext
    C:\Program Files\Java\jre1.6.0\lib\ext
    Ainsi par défaut le poi.jar est dans les packages natives de java. Cependant si je veux utiliser mon application (*.jar) sur un autre PC, je dois de nouveau mettre le poi.jar dans le JDK et JRE.

    Même si cette solution semble marché, j'aurai préféré une solution qui m'éviterai de copier à chaque fois le poi.jar dans le JDK et JRE.
    Donc si quelqu'un a la solution que je désire, je suis preneur.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    salut,

    je me prenais la tête pour rien.
    j'ai pris FatJar et tout marche parfaitement.

    pour ceux qui ont ce genre de problème, utilisez FatJar, c'est rapide et efficace

  7. #7
    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 ng.phung
    pour ceux qui ont ce genre de problème, utilisez FatJar, c'est rapide et efficace
    Pour info tes jar étaient mal placé : les jar indiqué dans le Class-Path du Manifest référence des fichiers en dehors du jar par un chemin relatif au répertoire de ton jar principal.

    Ainsi puisque tu avais défini ceci :
    Tu aurais dû avoir deux fichiers dans le même répertoire :
    • Ton jar principal avec tes classes
    • Le fichier poi.jar



    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/07/2009, 16h28
  2. [FLASH 8] : FLA qui fonctionne mais pas le SWF
    Par xtaze dans le forum Flash
    Réponses: 9
    Dernier message: 24/10/2006, 09h14
  3. Un programme qui veut bosser; mais pas trop.
    Par Flodelarab dans le forum C++
    Réponses: 8
    Dernier message: 28/08/2006, 15h33
  4. [Humour gras] mais pas trop gras non plus
    Par Commodore dans le forum La taverne du Club : Humour et divers
    Réponses: 6
    Dernier message: 20/07/2006, 02h37
  5. [débutant mais pas trop] conversion string->entier
    Par Biosox dans le forum Débuter
    Réponses: 5
    Dernier message: 06/01/2006, 22h41

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