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 :

Erreur NoClassDefFound (pourtant un classique, mais je ne trouve pas la solution)


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur / Scrum Master
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / Scrum Master

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 27
    Points
    27
    Par défaut Erreur NoClassDefFound (pourtant un classique, mais je ne trouve pas la solution)
    Bonjour à tous,

    l'erreur NoClassDefFound est un classique, mais je n'arrive pas à m'en débarrasser malgré toutes les solutions qu'on trouve sur le web et sur developpez.net

    Pour info, j'utilise Eclipse.
    Lorsque j'exécute le .jar de mon projet, voici le résultat :
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Layout
    at fr.sncf.transcodeur.Main.main(Main.java:20)
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Layout
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more
    Je n'avais pourtant pas de soucis jusqu'à ce que j'installe le JDK 1.7
    Je l'ai désinstallé (ainsi que toutes les versions Java présentes) et j'ai remis la version 1.6, cependant l'erreur persiste.

    Je sais que cette erreur est souvent liée au classpath, mais il est normalement correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="src"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    	<classpathentry kind="lib" path="lib/RXTXcomm.jar"/>
    	<classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>
    En reprenant le même code et en compilant puis l'exécutant sur un autre ordi (sur lequel j'ai aussi désinstallé JDK1.7 et remis le 1.6), je me retrouve avec la même erreur.

    Même en faisant un nouveau projet test avec une instanciation d'un logger (élément de la bibliothèque log4j), l'erreur est là.

    Merci pour votre future aide,

    Nils

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Commence par ouvrir le jar (c'est un simple Zip), et vérifie que la classe et son chemin son correct.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur / Scrum Master
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / Scrum Master

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 27
    Points
    27
    Par défaut
    J'ai regardé, les deux sont corrects

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur / Scrum Master
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / Scrum Master

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 27
    Points
    27
    Par défaut
    Si j'exporte en tant que "Runnable JAR", je peux lancer le programme, sauf qu'il coince au moment où il doit utiliser une autre bibliothèque (RXTXcomm) :
    java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver

    Y a vraiment un problème avec l'utilisation de bibliothèque :-/

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    le dernier problème n'a rien à voir avec le premier.

    Dans le premier, il manque des dépendances (ici log4j) lors de la création du .jar (le classpath utilisé par le .jar n'a rien à voir avec celui du projet eclipse)

    Dans le second cas, le problème est visiblement qu'une librairies native (rxtxSerial.dll) n'est pas présente sur le système.

    Tu peux ajouter le paramètre -Djava.library.path="chemin\vers\dossier\" pour préciser dans quel dossier ce trouve tes librairies natives

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur / Scrum Master
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / Scrum Master

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 27
    Points
    27
    Par défaut
    Je n'ai pas de .dll de la librairie, mais qu'un .jar
    Ca fonctionnait avant l'apparition de mon premier bug.
    Alors est-ce qu'il faudrait la dll lorsqu'on exporte sous forme de "runnable JAR"?

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Pourtant, le site de download http://rxtx.qbang.org/wiki/index.php/Download renvoie bien vers un zip contenant le jar mais aussi les dll windows, les .so pour diverses plateformes, etc. La libriarie native ne semble pas inclue dans le jar.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur / Scrum Master
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / Scrum Master

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Points : 27
    Points
    27
    Par défaut
    Effectivement, en rajoutant le dll dans le dossier system32, ça marche à nouveau.

    Je ne comprends toujours pas pourquoi ça ne marche plus en exportant vers un JAR, mais je vais continuer avec des "runnable Jar"

    Merci pour ton aide, tchize_

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2014, 06h51
  2. Réponses: 4
    Dernier message: 01/04/2010, 14h58
  3. erreur 1366 je ne trouve pas de solution
    Par moustiqu3 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 26/10/2008, 22h24
  4. Une erreur sur le free.. Oui mais pourquoi ?
    Par MonsieurAk dans le forum C
    Réponses: 7
    Dernier message: 22/12/2005, 20h51
  5. Réponses: 7
    Dernier message: 30/10/2005, 12h54

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