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 :

Manifest / Classpath : ClassNotFound


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut Manifest / Classpath : ClassNotFound
    Bonjour,

    Dans mon projet, j'utilise des API externes. Ces fichiers jar sont donc définis dans le classpath, et donc dans le manifest de mon projet.

    Si l'un des fichiers manque, est-ce toujours une ClassNotFoundException qui sera levé ?

    Lors de l'évolution du projet, l'une de ces API n'est plus utilisée. Je l'ai donc supprimé du classpath et du disque dur. Mais j'ai oublié le manifest Je pensais que les fichiers jar ne déclenchait des exceptions uniquement lors de leurs appels (instanciation ou appel à une classe). D'ailleurs, c'est le seul jar qui me pose problème : un autre jar n'est présent que sur le serveur, ça n'empeche pas les clients de fonctionner correctement.

    Si jamais je ne me suis pas trompé, et que le manifest oblige la présence des fichiers jar, j'ai alors 2 question :
    - A quel moment l'exception sera levée ?
    - Pourquoi je n'ai pas ce problème pour l'un des fichiers présent sur le serveur / absent sur les clients ?

    Merci d'avance !

  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
    Si tu as une ClassNotFoundException, c'est que la classe est recherchée par le ClassLoader et qu'elle est utilisée quelque part dans ton appli et que tu n'as pas retiré toutes les dépendances à cette API.

    Pour moi la présence dans le manifest n'oblige pas la présence de l'API.
    En effet le ClassLoader va se servir du manifest pour charger les jar, mais sans charger une classse spécifique, donc pas de ClassNotFoundException. Une ClassNotFoundException ne peut être lancée que si une classe spécifique est recherchée par le classloader.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Merci de ta réponse, ça me rassure un peu.
    Ce qui m'inquiète quand même, c'est que l'API n'est plus sur mon disque, ni dans le build path du projet. Il n'y a pas d'erreur à l'exécution (sous Eclipse), ni dans mes classes (pas d'import en erreur, d'une classe non trouvée). D'ailleurs, je l'ai enlevé justement parceque cette API n'était utilisée nulle part.
    Si le manifest n'est pas la cause du problème, ben je vais me débrouiller autrement. Mais du coup, je sais pas par où commencer

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Bon en fait, j'ai trouvé le problème : J'utilise FOP, le fichier fop.jar est donc dans le BuildPath et dans le manifest. Hors, FOP utilise lui-même batik.jar. J'ai donc cette erreur lorsque je lance un traitement FOP.

    Ce que je ne comprends, c'est qu'il y a une semaine environ, Eclipse me signalait une erreur de compilation sur les lignes "import org.apache.fop...". Le message me disait grosso-modo "fop utilise une librairie 'batik' non trouvée" (pour faire simple).

    Je ne sais pas ce que j'ai changé dans Eclipse, mais je n'ai plus cette erreur. J'ai cherché du coté des "referenced librairies", mais rien n'y fait. Si quelqu'un voit de quoi je parle, avec sa solution, ce serait sympa.
    Il faudrait peut être déplacé mon message du coté "Eclipse" du forum

    P.S : J'utilise Eclipse 3.4, mais il me semble que j'avais aussi ce message avec la version 3.1

Discussions similaires

  1. classpath d'un manifest.mf
    Par trevorsandrell dans le forum Général Java
    Réponses: 1
    Dernier message: 04/03/2008, 07h30
  2. Probleme pour configurer le classpath d'un manifest
    Par trevorsandrell dans le forum Général Java
    Réponses: 1
    Dernier message: 06/02/2008, 10h50
  3. [JAR][Manifest] classpath trop long
    Par zolive dans le forum Général Java
    Réponses: 5
    Dernier message: 22/03/2007, 16h46
  4. [M2] EJB plugin, MANIFEST.MF et Classpath
    Par rseM2 dans le forum Maven
    Réponses: 4
    Dernier message: 17/10/2006, 18h09
  5. -classpath ecraser par le classpath du fichier manifest?
    Par unmecenor dans le forum Langage
    Réponses: 3
    Dernier message: 05/09/2006, 17h55

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