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 :

NoClassDefFoundError avec un .jar


Sujet :

Langage Java

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut NoClassDefFoundError avec un .jar
    Salut à tous,

    Après quelques heures de prise de tête, je poste en risquant de me faire lincher mais bon je débute en java.

    Voilà, j'ai créé une application, pour résumer le .java:
    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
     
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.JOptionPane;
    import java.awt.GridBagLayout;
    import java.awt.GridBagConstraints;
     
    public class javapa {
      public static void main(String[] args) {
        // Crée le panneau principal et son gestionnaire
        JPanel fenetre_principale = new JPanel();
        BorderLayout disposition = new BorderLayout();
        fenetre_principale.setLayout(disposition);
    ...
        // Positionne les dimensions et rend la fenêtre visible
        cadre.setSize(700,300);
        cadre.setVisible(true);
      }
    }
    un petit coup de "javac -d exedir javapa.java" et voilà mon .class.
    Je me place dans le répertoire exedir et je lance un "java javapa" et ça fonctionne.

    J'attaque donc mon .jar pour pouvoir l'exporter facilement :
    Je crée mon manifest.mf dans le répertoire exedir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Main-Class: javapa
    Maintenant un petit coup de "jar cvfm javapa.jar manifest.mf javapa.class", ça me donne :
    manifest ajouté
    ajout : javapa.class (entrée = 3567) (sortie = 2121) (40% compressés)
    maintenant un petit coup de "java -jar javapa.jar" et voilà :
    Exception in thread "main" java.lang.NoClassDefFoundError: javapa$1
    at javapa.main(javapa.java:68)
    Petites précisions :
    - Je suis en 64bit sous linux, j'ai essayé avec gij et sun sdk, toujours la même chose.
    - J'ai essayé au boulot le .class(pas le .jar) et il me met le même type d'erreur(surtout le $1 qui m'inquiète) qu'avec mon .jar sous linux mais au boulot j'ai sans doute un problème de classpath, j'ai pas eu le temps d'appronfondir ....

    Quelqu'un aurait-il une solution à me proposer svp ?

  2. #2
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut
    Bonjour,
    A tout hasard, ne faudrait -il pas préciser le nom complet de ta classe qui contient le main?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Main-Class: com.toto.tutu.monappli.javapa
    en respectant la casse évidemment.

  3. #3
    Membre confirmé Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Points : 519
    Points
    519
    Par défaut
    Citation Envoyé par vincent63 Voir le message
    Bonjour,
    A tout hasard, ne faudrait -il pas préciser le nom complet de ta classe qui contient le main?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Main-Class: com.toto.tutu.monappli.javapa
    en respectant la casse évidemment.
    Il n'utilise pas de package donc son manifest est bon, et ce n'est pas la classe main que la jvm ne trouve pas mais javapa$1.class ; donc une classe interne.

    Lorsque le compilateur génère les fichiers .class il en génère un par classe interne en utilisant le nom de la classe "mère" suivi du caractère '$' puis d'un nombre.

    Quand tu crées ton jar tu n'inclus pas ces fichiers donc ta jvm ne les trouve pas à l'exécution.

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Points : 279
    Points
    279
    Par défaut
    Nickel T`lash, ça marche impec sous nux et sous windows. Va falloir que je me documente maintenant sur la génération des "classes internes" parce que j'avais jamais vu ça auparavant et moi je pensait qu'un .java donnait un .class et que les autres étaient des fichiers temporaires pour la compilation ....

    Encore un grand merci

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

Discussions similaires

  1. [debutant] excutable avec un .jar
    Par Deathangel dans le forum NetBeans
    Réponses: 2
    Dernier message: 09/08/2006, 00h55
  2. [JSTL] Association avec le jar ?
    Par MicroPuce dans le forum Taglibs
    Réponses: 5
    Dernier message: 07/01/2006, 14h49
  3. Réponses: 6
    Dernier message: 17/04/2005, 10h58
  4. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45
  5. Programme fonctionnant sur Eclipse mais pas avec le jar?
    Par kirik dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/02/2004, 13h43

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