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