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

Android Discussion :

Java/LibGdx : erreur NoClassDefFoundError [Débutant(e)]


Sujet :

Android

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut Java/LibGdx : erreur NoClassDefFoundError
    Hello,

    Je débute avec Eclipse/ADT et Libgdx.

    J'ai programmé un jeu en Java qui fonctionnait bien quand tout le code était dans le fichier "Main.java".

    Mais depuis que j'ai "sorti" une portion de code pour en créer une classe à part entière dans le fichier "Enemy.java", le jeu crashe dès exécution.

    Je ne sais pas si vous me suivez je ne m'exprime peut-être pas avec les bons termes.

    En gros, le programme compile, il se lance, mais il crashe instantanément et sort ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/jnigen/NativeCodeGenerator
    	at com.badlogic.gdx.utils.GdxBuild.main(GdxBuild.java:55)
    Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.jnigen.NativeCodeGenerator
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    	... 1 more
    J'ai fait des recherches bien sûr, et les résultats abondent sur Google à propos de cette erreur fréquente mais ça ne m'aide pas vraiment ( trop de causes possibles à cette erreur )

    Merci d'avoir lu ce message, Réponses bienvenues
    Bon 1er Mai à tous et toutes

  2. #2
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Sauf utilsation d'un classloader particulier, il ne me semble pas que l'erreur soit due à la refactorisation de votre code, mais à une erreur de classPath.
    Quel est vote classPath ? Il y a-t-il un code d'initialisation particulier de la lib Libgdx dans votre code ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut
    Tout d'abord merci de votre réponse

    Je suis incapable de préciser quel est mon ClassPath étant donné que j'ignore où se situe exactement cette information. Je suis sur linux, j'ai installé le bundle ADT, le sdk a été installé avec apt-get c'est tout ce que je peux affirmer avec certitude.

    Apparemment le ClassPath se trouve quelque part dans les Properties du projet android. Quand j'ouvre les propriétés de "monprojet-android" je sélectionne "Java Build Path" et il y a 4 onglets : "Sources","Projects","Libraries" et "Order and Export".

    - dans "Sources" il y a "monprojet-android/gen" et "monprojet-android/src"

    - dans "Projects" il y a "monprojet"

    - dans "Libraries" il y a :

    - "gdx-backend-android.jar - monprojet-android/libs"
    - "gdx.jar - monprojet/libs"
    - "Android 4.2.2"
    - "Android Dependencies"

    - dans "Order and Export" il y a (dans cet ordre) :

    - SEMI COCHÉ : "monprojet-android/src"
    - SEMI COCHÉ : "monprojet-android/gen"
    - COCHÉ : "monprojet"
    - NON COCHÉ : "Android 4.2.2"
    - NON COCHÉ : "Android Dependencies"
    - COCHÉ : "gdx.jar - monprojet/libs"
    - COCHÉ : "gdx-backend-android.jar - monprojet-android/libs"

    Dans "MainActivity.java" (fichier "monprojet-android/src") il y a :

    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
    package com.badlogic.monprojet;
     
    import android.os.Bundle;
     
    import com.badlogic.gdx.backends.android.AndroidApplication;
    import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
     
    public class MainActivity extends AndroidApplication {
    	   @Override
    	   public void onCreate(Bundle savedInstanceState) {
    	      super.onCreate(savedInstanceState);
     
    	      AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
    	      cfg.useGL20 = true;
    	      cfg.useAccelerometer = false;
    	      cfg.useCompass = false;
     
    	      initialize(new MonProjet<Object>(), cfg);
    	   }
    	}

    Et dans "MonProjet.java" (fichier "monprojet") il ne me semble pas ya avoir d'initialisation spéciale de libgdx.

  4. #4
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    J'ai été un peut vite car je viens de voir que l'erreur n'est pas dans votre classe Main mais dans com.badlogic.gdx.utils.GdxBuild.main.
    Je connais pas cette lib mais il semble que GdxBuild soit utilisé lors du build de l'application pas lors de l'exécution sauf si il y a un compilation à la volée de certaine classe. Donc je suppose que c'est du côté de la config de compilation qu'il faut chercher.
    Voir peut-être sur http://code.google.com/p/libgdx/wiki/ProjectSetup
    Ne manque-t-il pas les libs armeabi and armeabi-v7 ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 26
    Par défaut
    L'arborescence du projet "monprojet" ne comporte ni "armeabi" ni "armeabi-v7" dans les libs/. Par contre les libs/ de "monprojet-android" comportent bien "armeabi" et "armeabi-v7a" donc je suppose qu'ils sont bien pris en compte.

    En tout cas merci pour le tuyau jdevbe, je vais effectuer des recherches

    EDIT : J'ai trouvé j'avais simplement des libs en double dont la version différait !

    Je ne suis pas encore habitué à Eclipse, les messages d'erreurs en rouge au redémarrage d'eclipse sont assez explicites ! Je croyais que ces messages étaient de simples warnings sans conséquence. Merci de votre aide sans elle je n'aurai pas fait le rapprochement avec les libs.

    Je n'ai pas encore lancé le programme mais je suis persuadé que ça va faire avancer le schmilblick.

Discussions similaires

  1. NetBeans 5.5.1 "Erreur NoClassDefFoundError"
    Par tofke dans le forum NetBeans
    Réponses: 12
    Dernier message: 05/09/2012, 03h16
  2. Erreur: NoClassDefFoundError: org/objectweb/asm/Type
    Par salmamah dans le forum Hibernate
    Réponses: 2
    Dernier message: 19/01/2010, 02h02
  3. creation de l'archive JAVA donne erreurs
    Par chapeau_melon dans le forum WinDev
    Réponses: 3
    Dernier message: 15/05/2008, 11h36
  4. Erreur NoClassDefFoundError: com/ibm/icu/text/Collator
    Par GdPa08 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/04/2008, 09h47
  5. Erreur NoClassDefFoundError Linux mais pas windows
    Par grabriel dans le forum Persistance des données
    Réponses: 9
    Dernier message: 03/03/2008, 17h20

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