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 :

Appel d'une classe depuis un autre répertoire


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Appel d'une classe depuis un autre répertoire
    Bonjour

    j'ai un problème assez basique avec java, et je pense que je dois mal faire quelque chose, mais je n'arrive pas à exécuter une classe java depuis un autre répertoire que celui dans lequel elle a été compilée.


    Je fais des tests avec un code très simple qui se contente d'afficher le classpath en cours !
    Je commence dans le répertoire test_cp, et je compile le fichier pac/PrintClasspath.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac pac/PrintClasspath.java
    La classe PrintClasspath appartient au package pac.
    J'appelle la classe avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java pac/PrintClasspath
    Tout fonctionne jusque-là.

    Maintenant je change de répertoire. Je me place pour les tests dans le répertoire parent avec cd ..
    Je rappelle la classe avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp test_cp: test_cp/pac/PrintClasspath
    et là ça ne marche pas. J'obtiens le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.lang.NoClassDefFoundError: test_cp/pac/PrintClasspath (wrong name: pac/PrintClasspath)
    Je comprends d'après ce message qu'il y a un problème entre la définition du chemin de la classe et le classpath utilisé. Mais je pensais que déclarer test_cp dans le classpath servait justement à éviter ce genre de problèmes.

    J'ai essayé différentes variantes, comme enlever la définition du package et rajouter l'arborescence dans le classpath.

    La seule chose qui marche, c'est de faire correspondre à chaque fois la définition du package au répertoire depuis lequel j'appelle la classe.

    par exemple si j'appelle depuis le répertoire parent de test_cp, je dois modifier la ligne comme suit :

    Je ne pense que pas ce comportement soit normal, et je suis sûr que je dois me tromper quelque part. Je dois utiliser certaines classes depuis plusieurs répertoires différents, et je ne peux pas m'amuser à changer le code source et recompiler à chaque fois !!!

    Merci de votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Bon ben comme quoi poser des questions est toujours une bonne idée !
    Je viens d'avoir l'illumination de la réponse.

    En fait je pensais que l'appel de java suivait le schéma

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp classpath chemin/vers/la/classe
    alors qu'en fait c'est plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp classpath Classe
    Java cherche donc la classe Classe dans le classpath. J'ai donc modifié mon appel de la façon suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp test_cp: pac/PrintClasspath
    et java va donc cherche la classe pac.PrintClasspath (donc la classe PrintClasspath dans le package pac) dans le répertoire test_cp. Et ça marche !!!

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

Discussions similaires

  1. Appel d'une methode depuis d'autre class
    Par giraud vias dans le forum C#
    Réponses: 3
    Dernier message: 28/12/2017, 14h17
  2. Appel d'une classe dans un autre répertoire
    Par frites.saucisse dans le forum Général Python
    Réponses: 2
    Dernier message: 08/07/2008, 16h05
  3. appel d'une image depuis un autre serveur
    Par isa150183 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 16/12/2007, 17h08
  4. Réponses: 2
    Dernier message: 26/11/2007, 12h22
  5. appel d'une classe d'un autre fichier.
    Par overider dans le forum Tkinter
    Réponses: 7
    Dernier message: 27/09/2007, 11h11

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