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

Entrée/Sortie Java Discussion :

impossible de compiler un exemple basic : java.lang.NoClassDefFoundError


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut impossible de compiler un exemple basic : java.lang.NoClassDefFoundError
    J'essai de faire un bot msn wikipedia, comme le bot msn encarta.

    Je voudrai simplement faire marcher l'exemple de la librairie JML :

    http://sourceforge.net/projects/java-jml/

    mais lorsque je compile j'obtiens cette erreur :

    [15:28:38][anto@jupiter] ~/bot_msn_wikipedia/java/jml/example/net/sf/jml/example$ java BasicMessenger
    Exception in thread "main" java.lang.NoClassDefFoundError: BasicMessenger (wrong name: net/sf/jml/example/BasicMessenger)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)


    j'ai cherché et apparement ça vient du classpath. Je l'ai modifié, j'en ai essayé plein :

    [15:22:31][anto@jupiter] ~/bot_msn_wikipedia/java/jml/example/net/sf/jml/example$ set $CLASSPATH=.:/home/anto/bin/jdk1.6.0_02/

    J'ai essayé /home/anto/bin/jdk1.6.0_02/bin/ /home/anto/bin/jdk1.6.0_02/lib/ etc...

    Mais ça ne marche pas.

    Quelqu'un aurai une idée, une piste, sait d'où vient mon problème?

    Merci pour votre attention,

    Antony.

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    le classpath pointe a la fin sur le repertoire bin .../jdk1.6.0_02/bin/
    tu utilse des jar externes?
    d apres ton message d erreur, le compilateur ne trouve pas BasicMessenger.
    tu peux poster ton code?
    n'oublie pas les balises code.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut
    donc le classpath doit pointer vers un bin à la fin. ok J'ai donc mit celui là :

    set $CLASSPATH=.:/home/anto/bin/jdk1.6.0_02/bin/

    Normalement je dois utiliser ce fichier jar :

    http://sourceforge.net/project/showf...roup_id=118829

    Je l'avais ajouté dans le classpath, mais ça ne change rien :

    set $CLASSPATH=.:/home/anto/bin/jdk1.6.0_02/bin/:/home/anto/bot_msn_wikipedia/java/jml/jml-1.0b2.jar


    J'obtient la même erreur.

    Voilà le code de la classe :



    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
     
     
    /*
     * Copyright 2004-2005 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package net.sf.jml.example;
     
    import net.sf.jml.MsnMessenger;
    import net.sf.jml.impl.MsnMessengerFactory;
     
    /**
     * @author Roger Chen
     */
    public class BasicMessenger {
     
        private String email;
        private String password;
     
        public String getEmail() {
            return email;
        }   
     
        public void setEmail(String email) {
            this.email = email;
        }   
     
        public String getPassword() {
            return password;
        }
     
        public void setPassword(String password) {
            this.password = password;
        }
     
        protected void initMessenger(MsnMessenger messenger) {
        }
     
        public void start() {
            //create MsnMessenger instance
            MsnMessenger messenger = MsnMessengerFactory.createMsnMessenger(email,
                    password);
     
            //MsnMessenger support all protocols by default
            //messenger.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP8 });
     
            //default init status is online, 
            //messenger.getOwner().setInitStatus(MsnUserStatus.BUSY);
     
            //log incoming message
            messenger.setLogIncoming(true);
     
            //log outgoing message
            messenger.setLogOutgoing(true);
     
            initMessenger(messenger);
            messenger.login();
        }
     
        public static void main(String[] args) throws Exception {
            if (args.length != 3) {
                System.out.println("Usage: java messengerClassName email password");
                return;
            }
            BasicMessenger messenger = (BasicMessenger) Class.forName(args[0])
                    .newInstance();
            messenger.setEmail(args[1]);
            messenger.setPassword(args[2]);
            messenger.start();
        }
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [15:28:38][anto@jupiter] ~/bot_msn_wikipedia/java/jml/example/net/sf/jml/example$ java BasicMessenger 
    Exception in thread "main" java.lang.NoClassDefFoundError: BasicMessenger (wrong name: net/sf/jml/example/BasicMessenger)
    at java.lang.ClassLoader.defineClass1(Native Method)
    Etant donné que tu n'as visiblement pas le message suivant :
    Usage: java messengerClassName email password
    Je suis tenté de dire qu'il ne connait pas le BasicMessenger.class. Donc quelques questions :
    1 - Est-ce que la compilation c'est bien passée?
    2 - Est-ce que "~/bot_msn_wikipedia/java/jml/example/net/sf/jml/example" contient bien tes .class
    3 - Si le chemin précédent contient bien les .class, as-tu essayé de lancer ton programme en passant le nom complet net.sf.jml.example.BasicMesenger en te plaçant à la racine de ton projet?

    Sinon, petite question :
    Ne faut-il pas passer le nom complet (package + classe) à la méthode forName pour que cela fonctionne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     BasicMessenger messenger = (BasicMessenger) Class.forName(args[0]).newInstance();
    Eric

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Re,

    Je viens de relire le post et je me suis rendu compte que j'avais lu un peu vite...

    Tu dis avoir une erreur à la compilation, mais ici tu cherches à lancer le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [15:28:38][anto@jupiter] ~/bot_msn_wikipedia/java/jml/example/net/sf/jml/example$ java BasicMessenger
    Exception in thread "main" java.lang.NoClassDefFoundError: BasicMessenger (wrong name: net/sf/jml/example/BasicMessenger)
    Pour compiler, il faut utiliser la commande javac

    Plus de détails ici : http://java.sun.com/j2se/1.4.2/docs/...ows/javac.html

    Eric

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut
    Pardon, c'était bien une erreur à l'execution et non la compilation!

    Lorsque j'execute java net.sf.jml.example.BasicMessenger, j'ai bien :

    Usage: java messengerClassName email password

    Donc ça marche!!!

    Merci beaucoup pour ton aide . C'est super sympa, je met le sujet en résolu.

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

Discussions similaires

  1. Impossible de compiler les exemples d'OpenCV 2.4.1
    Par thibaut_marclor dans le forum OpenCV
    Réponses: 5
    Dernier message: 15/06/2012, 15h27
  2. java.lang.NoClassDefFoundError sur un exemple tout simple
    Par Invité dans le forum Services Web
    Réponses: 2
    Dernier message: 23/02/2009, 10h36
  3. Impossible de compiler un exemple
    Par ChipsterJulien dans le forum Boost
    Réponses: 6
    Dernier message: 24/02/2008, 12h14
  4. DirectX impossible de compiler un exemple.
    Par OpenGG dans le forum DirectX
    Réponses: 3
    Dernier message: 23/03/2006, 00h18
  5. [Struts] java.lang.NoClassDefFoundError
    Par Zephoria dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/02/2005, 10h51

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