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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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
    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
    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
    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
    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
    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

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