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
La classe PrintClasspath appartient au package pac.
Code : Sélectionner tout - Visualiser dans une fenêtre à part javac pac/PrintClasspath.java
J'appelle la classe avec la commande
Tout fonctionne jusque-là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part java pac/PrintClasspath
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
et là ça ne marche pas. J'obtiens le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part java -cp test_cp: test_cp/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.
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)
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 !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part package test_cp.pac;
Merci de votre aide
Partager