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 :

Quelle est la cause exacte de l'erreur java.lang.NoClassDefFoundError


Sujet :

Langage Java

  1. #1
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut Quelle est la cause exacte de l'erreur java.lang.NoClassDefFoundError
    Bonjour,

    J'ai terminé récemment une petite application (je travaillais sur une Mandrake chez moi et au labo, il y'avait une Fedora) et aujourd'hui je suis allé au labo de l'école pour l'installer. Avec IzInstall tout se passe bien mais j'ai un problème bizzare.

    J'installe bien le JDK. Après avoir bien configuré le CLASSPATH et le PATH, en y ajoutant notamment le répertoire bin du JDK, je compile mon programme. Aucun soucis.

    Mais lorsque j'essaie d'exécuter, hop j'obtiens cette erreur je ne vois absolument pas d'où elle vient ni comment la corriger. Un truc doit m'échapper.

    Sauriez-vous me dire quoi svp ?

    PS: j'ai fait des tests chez moi avant de fabriquer le setup et tout fonctionne correctement

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Quel commande tapes-tu pour l'exécuter? À partir de quel répertoire? Et quel est le nom de la classe que tu veux exécuter (package.Nom)?

  3. #3
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Le package se nomme temgoua.notificationsystem.client

    J'en ai trois au total
    => temgoua.notificationsystem.common
    => temgoua.notificationsystem.client
    => temgoua.notificationsystem.server

    Je compile bine le premier package et j'ajoute son .jar dans le CLASsPATH parce que les autres l'utilisent.

    Je compile bien le client et le server. Aucun problème.


    Pour le faire, je tape :

    j'obtiens un répertoire dans le répertoire courant le répertoire temgoua/notificationsystem/client contenant mes .class

    Pour exécuter, je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java temgoua.notificationsystem.client.MainFrame
    MainFrame étant un descendant de JFrame qui est la fenêtre principale de mon application, qui contient une fonction main qui me sert entre autres pour recupérer les paramètres éventuels de la ligne de commande.

    C'est au moment d'exécuter que je rencontre le problème.

    J'ai discuté de ce problème il y'a quelques instants sur le chat et j'avais oublié de signaler ici que sur la machine du labo, il y'avait une JDK déjà installer avant que je n'installe la mienne. J'ai donc installé la mienne et j'ai modifié le PATH pour que ce soit mon programme java (de mon JDK) qui se lance. J'ai tapé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PATH="REP_DU_NOUVEAU_JDK:$PATH"
    donc je lance mon prog java à partir du répertoire sources (où se trouvent les fichiers *.java)

    [EDIT]
    En fait pour la compil, comme je ne comprenais plus rien, j'ai tout tester même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java temgoua/notificationsystem/client/MainFrame
    si je tape où jsjshks n'existe absolument pas, j'obtiens la même erreur d'ailleurs

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    tu as bien MainFrame.class dans le bon répertoire?
    Ta méthode main, tu peux nous la montrer?

  5. #5
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par ®om
    tu as bien MainFrame.class dans le bon répertoire?
    Ta méthode main, tu peux nous la montrer?
    Ouaip. MainFrame.class y est. et voici la méthode Main

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    package temgoua.notifiersystem.client;
     
    import java.net.*;
    import javax.swing.*;
    /**
     *
     * @author  giovanny
     */
    //Receive at the command line
    //
    public class MainFrame extends javax.swing.JFrame
    {
        static String host = null;
        static int frequency = 0;
        static int port = 0;
        static ClientType clientType = ClientType.SERVER;
        static String user = null;
        static String password = null;
    [....]
    public static void main(String args[])
        {        
     
            if(args.length > 11)
                printHelp();
     
            for(int i = 0; i < args.length; i++)
            {
                if(args[i].compareToIgnoreCase("-?") == 0)
                {
                    printHelp();
                }            
                else if(args[i].compareToIgnoreCase("-frequence") == 0)
                {
                    if( (i + 1) < args.length)
                        frequency = (new Integer(args[++i])).intValue();
                    else
                        frequency = 5000 ;
                }
                else if(args[i].compareToIgnoreCase("-port") == 0)
                {
                    if( (i + 1) < args.length)
                        port = (new Integer(args[++i])).intValue();
                    else
                        port = 18000 ;
                }
                else if(args[i].compareToIgnoreCase("-h") == 0)
                {
                    if( (i + 1) < args.length)
                        host = args[++i];
                    else
                        host = "localhost" ;
                }
                else if(args[i].compareToIgnoreCase("-t") == 0)
                {
                    if( (i + 1) < args.length)
                    {
                        if(args[i+1].compareToIgnoreCase("classic") == 0)
                            clientType = ClientType.CLASSIC;
                        else
                            clientType = ClientType.SERVER;
                    }
                    else
                        clientType = ClientType.SERVER;
                }
     
            }
     
            //Go...
     
            try
            {        
                MainFrame frame = new MainFrame();
     
                if(clientType != null)
                    frame.setClientType(clientType);
     
                if(frequency != 0)
                    frame.setFrequency(frequency);
     
                if(user != null)
                    frame.setUser(user);
     
                if(port != 0)
                    frame.setPort(port);
     
                if(host != null)
                    frame.setHost(host);
     
                //frame.connectToServer();
                frame.setVisible(true);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    Merci

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Essaye d'exécuter en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp . temgoua/notifiersystem/client/MainFrame

  7. #7
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par ®om
    Essaye d'exécuter en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp . temgoua/notifiersystem/client/MainFrame
    Faudrait que je me renseigne un peu plus sur le paramètre cp. Les environnements facilitent tellement la vie que lorsqu'on doit le faire à la main, la probabilité qu'un problème survienne est grande

    Et si jamais j'ai la même erreur ? Que faire ? (actuellement le labo est certainement fermé)

    Tu penses que les deux JDK peuvent être le problème ?

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    -cp c'est juste le classpath, rajouter . au classpath (sinon il ne regarde même pas le répertoire à partir duquel tu lances l'appli, donc ne trouve pas le fichier).

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par ®om
    -cp c'est juste le classpath, rajouter . au classpath (sinon il ne regarde même pas le répertoire à partir duquel tu lances l'appli, donc ne trouve pas le fichier).
    Juste pour préciser que certains environnements (ou installation) Java intègrent le répertoire courant dans le classpath, et d'autres non. Donc parfois, il faut le spécifier explicitement... ou le rajouter manuellement dans la variable CLASSPATH. Quand on ne le sait pas, on cherche l'erreur partout... alors qu'elle est juste là!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je vois. Ce devrait probablement être cà l'erreur.

    Je teste demain et je vous tiens au courant.

    Merci

Discussions similaires

  1. 2 erreurs java.lang.NoClassDefFoundError
    Par pruderic dans le forum Services Web
    Réponses: 2
    Dernier message: 23/10/2009, 16h23
  2. message erreur : java.lang.NoClassDefFoundError
    Par lord_british dans le forum Java ME
    Réponses: 2
    Dernier message: 03/04/2009, 08h06
  3. Réponses: 2
    Dernier message: 04/02/2009, 15h04
  4. Erreur java lang.NoClassDefFoundError
    Par robinson50 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 17/07/2008, 22h55
  5. Réponses: 13
    Dernier message: 31/01/2007, 23h22

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