Je pensais comprendre le fonctionnement du classpath dans la commande java mais je suis tombé sur le problème suivante :
première commande :
java -cp ./bin:~/INGI2339.jar Test
j'obtiens l'erreur :
Exception in thread "main" java.lang.NoClassDefFoundError: slip/grammars/Grammar
Caused by: java.lang.ClassNotFoundException: slip.grammars.Grammar
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
seconde commande :
java -cp ~/INGI2339.jar:./bin Test
Là le programme s'exécute normalement.
La classe recherchée se trouve dans le fichier .jar. Pourquoi n'est-elle pas trouvée lors de l'exécution de la première commande ? J'ai beau chercher dans les descriptions de la façon dont les classes sont recherchées dans la documentation officielle, je ne trouve aucun explication.
Merci à celui qui pourra m'éclairer.
Baudouin
Partager