Date de publication : Nov 26, 2008 11:16:50 AM
Le classpath représente les différents chemins pour trouver les classes Java (classe qu'on lance
par le main comme les classe "bibliothèque".
Il y a 2 façons de renseigner le classpath :
- soit localement, au niveau du lancement de la jvm avec l'option -cp
java -classpath cuodtester.jar;cuodclient.jar; tester.TheTester 1stParam 2ndParam
- soit globalement, au moyen d'une variable système :
CLASSPATH = .;D:\lib;D:\lib\log4j.jar
Rem :
- dans le cas où l'on spécifie un répertoire, c'est le répertoire contenant l'ensemble des packages.
E. g. si dans C:\Temp on a un package pom, qui contient une classe Toto.java, alors il faudra rajouter
CLASSPATH = %CLASSPATH%;C:\Temp
- dans le cas où l'on spécifie un .jar, alors il faut donner le chemin complet en incluant le nom du
ficher .jar.
E.g. si on a C:\Temp\pom.jar, alors on rajoute C:\Temp\pom.jar au CLASSPATH.
- toujours rajouter . dans la variable CLASSPATH. Sinon, on ne peut plus lancer
P. ex. si on ne rajoute pas le '.' : (avec classe se trouvant dans Test\pom\TestSystem.java)
C:\Program Files\eclipse\workspace>java -cp Test TestSystem
Exception in thread "main" java.lang.NoClassDefFoundError: TestSystem
=> ne marche pas
C:\Program Files\eclipse\workspace>java -cp Test pom.TestSystem
=> marche
Comment voir les choses :
le -cp spécifie un chemin : C:\toto
le nom de la classe Java utilise un nom de classes java : Toto.java ou package.Toto.java ou Toto.jar
Cas différent si on a Toto.java ou pom.Toto.java.
Dans le 1er cas, la JVM essaie de trouver une classe du nom de Toto.java.
Dans le 2ème, la JVM récupère la valeur de la variable CLASSPATH, et essaie de trouver un package pom, puis une classe
Toto.java.
Si on veut appler un .jar, on peut spécifier un nom de chemin physique :
Ex : java -jar c:\temp\toto.jar
java.util.Properties p = System.getProperties();
java.util.Enumeration keys = p.keys();
String key;
while( keys.hasMoreElements() ) {
key = keys.nextElement().toString();
System.out.println( key + ": " + System.getProperty(key) );
}