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

avec Java Discussion :

Erreur "NoClassDefFoundError" à l'exécution


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut Erreur "NoClassDefFoundError" à l'exécution
    Bonjour,
    Je précise tout de suite que j'ai plusieurs années d'expérience Java derrière moi, mais je travaille toujours sous Eclipse, et mes dernières compilations à la main sous Unix remontent à mon apprentissage scolaire.

    Dans mon programme, j'ai besoin de connaître le nombre de pages d'un fichier PDF généré précédemment. J

    J'ai donc créé une classe test à cet effet, qui ouvre un fichier PDF (via l'API Apache PdfBox) et compte le nombre de pages.

    J'ai créé la dite classe, toute simple, sous Eclipse. Cela fonctionne à merveille.

    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
     
    import java.io.File;
    import java.io.IOException;
     
    import org.apache.pdfbox.pdmodel.PDDocument;
     
    class testPDF {
     
    	public static void main(String args[]) {
    		PDDocument doc = null;
    		try {
    			doc = PDDocument.load(new File("C:\\\\Lisezmoi.pdf"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		int count = doc.getNumberOfPages();
    		System.out.println("il y a "+count+" pages dans le document");
     
    	}
     
    }
    Exécution :
    il y a 20 pages dans le document
    Me voilà donc parti sous linux, je dispose dans un même répertoire mon fichier testPDF.java, mon jar de pdfbox, et je me lance à la compilation à la main.

    javac -classpath pdfbox-app-1.7.1.jar testPDF.java
    Je compile sans soucis, jusque là ça va. C'est à l'exécution que ça se gâte.

    java testPDF
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument
    at testPDF.main(testPDF.java:12)
    Je me dis alors qu'il faut que je rajoute de nouveau au classpath mon jar

    java -cp pdfbox-app-1.7.1.jar testPDF
    Exception in thread "main" java.lang.NoClassDefFoundError: testPDF
    Une idée ?

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Hello,


    tente avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp .:pdfbox-app-1.7.1.jar testPDF

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut
    Eh !! Ca fonctionne !!!

    Que je comprenne bien? On mets dans le classpath à la fois le répertoire courant, et le jar? Pourquoi? Il faut lui indiquer explicitement où se situe le .class ?

    Merci pour la solution, et merci pour les explications !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    De ce que je me souviens, lorsque tu compiles avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -classpath pdfbox-app-1.7.1.jar testPDF.java
    ça revient à lui dire : compile moi cette la classe testPDF.java et pour réussir à compiler cette classe, tu peux récupérer d'autre .class dans ce classpath

    Lorsque tu veux lancer, avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -cp .:pdfbox-app-1.7.1.jar testPDF
    ça revient à lui dire : lance moi la classe testPDF que tu trouveras dans le classPath que j'ai défini. Et si tu n'inclus pas le dossier courant il ne trouve pas la classe externe à ton jar

    Voilà voilà sauf erreur de ma part.

    bonne soirée.

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

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