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 :

Problème ClassNotFoundException avec java -cp


Sujet :

avec Java

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

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut Problème ClassNotFoundException avec java -cp
    Bonjour,

    J'ai créé une librairie "librairie1" sous la forme d'un jar qui elle-même a besoin de l'API JEXCEL.

    J'ai créé une classe "ConvertExcelToFlatFile" qui se charge d'exécuter une classe dans librairie1.

    Si je place mes 2 librairies dans le même dossier que ma classe que j'exécute, cela fonctionne, mais pas avec mes jar (au moins cela fonctionne avec les jar décompressés, c'est déjà bien).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java ConvertExcelToFlatFile
    J'aimerai par contre placer mes 2 librairies dans un autre dossier, ./lib par exemple. J'ai vu qu'il fallait utilisé -cp ou -classpath pour spécifier l'emplacement des librairies. J'ai donc déplacer mes 2 libraires dans ./lib et écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp ./lib ConvertExcelToFlatFile
    ou même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp ./lib/librairie.jar ConvertExcelToFlatFile
    Et c'est la qu'il me sort :

    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: librairie1/ExcelToFlatFileException
    Caused by: java.lang.ClassNotFoundException: librairie1.ExcelToFlatFileException
            at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: ConvertExcelToFlatFile.  Program will exit.
    J'ai essayé avec -classpath mais idem.

    En plus de vouloir régler ce problème, j'aimerai au final utiliser les librairies en jar et non en dossier/sous-dossier/fichiers.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il faut penser à garder le répertoire courant dans le classpath

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp .;lib/librairie1.jar;lib/librairie2.jar ConvertExcelToFlatFile

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Bonjour une autre solution pour exécuter ton jar à partir de la ligne de commande on utilisons le classpath c'est de faire:
    set CLASSPATH= .;lib/librairie1.jar;lib/librairie2.jar pour modifier ta variable d’environnement temporairement, afin que java puisse trouver le fichier que tu veux exécuter.
    puis tu donne le chemin exacte de ton fichier:
    java ConvertExcelToFlatFile

    Bon courage.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    @naou18, en général on évite de procéder de cette façon.
    En effet, le classpath est une notion rattachée au niveau de l'application, pas du système.

    Mettre en place une variable d'environnement CLASSPATH risque d'entraîner des conflits de version de jar au niveau des diverses application java.

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

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Quand je lance la commande (c'est ma lib perso) :

    set CLASSPATH .;/files/tools/metabaserh/scripts/lib/librairie1.jar
    J'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /files/tools/metabaserh/scripts/lib/librairie1.jar: line 1: PK: command not found
    /files/tools/metabaserh/scripts/lib/librairie1.jar: line 2:*?: command not found
    /files/tools/metabaserh/scripts/lib/librairie1.jar: line 3:?Z±2jjMETA-INF/MANIFEST.MFManifest-Version:: No such file or directory
    /files/tools/metabaserh/scripts/lib/librairie1.jar: line 4: Ant-Version:: command not found
    /files/tools/metabaserh/scripts/lib/librairie1.jar: line 5: syntax error near unexpected token `('
    'files/tools/metabaserh/scripts/lib/librairie1.jar: line 5: `Created-By: 1.6.0_27-b07 (Sun Microsystems Inc.)
    Je comprends qu'il ne trouve pas de fichier MANIFEST.
    EDIT : quand je décompresse mon jar j'ai bien un MANIFEST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.8.2
    Created-By: 1.6.0_27-b07 (Sun Microsystems Inc.)
    Je développe sous Netbeans..

    Quand je lance la commande (lib JEXCEL API) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set CLASSPATH .;/files/tools/metabaserh/scripts/lib/jxl.jar
    J'ai cette erreur :

    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
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 1: PK: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 2: cqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 2: META-INF/þÊPK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 3:bqX: command not found
    K-*ÎÌϳR0Ô3àårÌCq,HLÎHU%Íõripts/lib/jxl.jar: line 3: ÊNétMETA-INF/MANIFEST.MFóMÌËLK-.Ñ
    y¹RKRSt
           /files/tools/metabaserh/scripts/lib/jxl.jar: line 3: 3ót
                                                                   /files/tools/metabaserh/scripts/lib/jxl.jar: line 3: óõ4y¹: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 4: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 4: jxl/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 5: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 5: jxl/biff/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 6: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 6: jxl/biff/drawing/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 7: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 7: jxl/biff/formula/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 8: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 8:
                                                         jxl/common/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 9: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 9: jxl/common/log/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 10: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 10: jxl/demo/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 11: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 11:
                                                          jxl/format/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 17: sy63²02°0°Xr near unexpected token `('
    Í(F®àüÒ¢äT·Ì*S~~NjbsjN^VbY"VE>0PHB?'1/]ß?)+5¹h*HH 17: `qX;çGp~jxl/BooleanCell.class;õo×>#nvvNv.FôÔ°ÄÒTFf
    l@PK'
    Merci encore.

  6. #6
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Bonjour il faut mettre =
    set CLASSPATH =.;/files/tools/metabaserh/scripts/lib/librairie1.jar
    comment tu génère ton Jar.?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Je le génère avec Netbeans 7.0.1.

    Que je fasse set CLASSPATH = [...] ou java -cp j'ai la même erreur.

  8. #8
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    il faut que tu donne le chemin complet de la méthode que tu veux exécuter,
    par exemple: monPackage.nomClasse

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Citation Envoyé par naou18 Voir le message
    il faut que tu donne le chemin complet de la méthode que tu veux exécuter,
    par exemple: monPackage.nomClasse
    Je pense qu'il y a un malentendu :

    Je veux exécuter une classe qui ne se trouve dans aucun package qui appelle une méthode de ma librairie librairie1.jar qui elle-même a besoin de jxl.jar.

    Sur le serveur çà donne :

    ./ConvertExcelToFlatFile.class
    ./lib/librairie.jar
    ./lib/jxl.jar

    Je voudrais exécuter en gros faire
    java ConvertExcelToFlatFile -opt1 opt1 -opt2 opt2 en lui spécifiant que mes librairies sont dans ./lib.

    J'utilise une classe à part (ConvertExcelToFlatFile) pour gérer les codes retour dans un shell.

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp .;lib/librairie.jar;lib/jxl.jar ConvertExcelToFlatFile -opt1 opt1 -opt2 opt2
    Et évitez l'option passant par la variable d'environnement CLASSPATH autant que faire se peut. (cf mon post plus haut)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Citation Envoyé par sinok Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp .;lib/librairie.jar;lib/jxl.jar ConvertExcelToFlatFile
    Déjà essayé, j'ai cette errreur :

    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
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 1: PK: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 2: cqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 2: META-INF/þÊPK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 3:bqX: command not found
    K-*ÎÌϳR0Ô3àårÌCq,HLÎHU%Íõripts/lib/jxl.jar: line 3: ÊNétMETA-INF/MANIFEST.MFóMÌËLK-.Ñ
    y¹RKRSt
           /files/tools/metabaserh/scripts/lib/jxl.jar: line 3: 3ót
                                                                   /files/tools/metabaserh/scripts/lib/jxl.jar: line 3: óõ4y¹: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 4: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 4: jxl/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 5: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 5: jxl/biff/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 6: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 6: jxl/biff/drawing/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 7: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 7: jxl/biff/formula/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 8: bqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 8:
                                                         jxl/common/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 9: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 9: jxl/common/log/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 10: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 10: jxl/demo/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 11: aqX: command not found
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 11:
                                                          jxl/format/PK: No such file or directory
    /files/tools/metabaserh/scripts/lib/jxl.jar: line 17: sy63²02°0°Xr near unexpected token `('
    Í(F®àüÒ¢äT·Ì*S~~NjbsjN^VbY"VE>0PHB?'1/]ß?)+5¹h*HH 17: `qX;çGp~jxl/BooleanCell.class;õo×>#nvvNv.FôÔ°ÄÒTFf
    l@PK'

  12. #12
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Votre jar de jxl a l'air mal foutu, essayez de le retélécharger.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    J'ai trouvé, il faut mettre ":" et non ";" pour séparer les paths, je suis sous AIX et pas Windows, j'avais pas précisé

  14. #14
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Forcément...

Discussions similaires

  1. Problème CSS avec Java
    Par totot dans le forum Développement Web en Java
    Réponses: 13
    Dernier message: 23/07/2014, 00h12
  2. problème rsync avec java
    Par glasgow dans le forum Langage
    Réponses: 4
    Dernier message: 15/05/2009, 18h08
  3. Problème de date avec JAVA & Oracle
    Par bobic dans le forum JDBC
    Réponses: 2
    Dernier message: 02/11/2006, 12h21
  4. Problème compatibilité encodage Java et js avec IE
    Par sev22 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2006, 09h57
  5. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54

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