2010-06-09 5 views
10

Je travaille sur un PC Windows et j'ai cygwin dessus! J'ai organisé tous mes bocaux sous un répertoire dans quelques répertoires! Je vous écris un script bash pour régler la CLASSPATH en parcourant le répertoire qui est passé en paramètre comme suit:Whitespaces dans CLASSPATH

for JAR_FILE in `ls *.jar` 
do 
    CLASSPATH="$DIRECTORY_TO_LOOK_FOR_JARS"/$JAR_FILE:$CLASSPATH 
done 

Chaque fois qu'il ya des espaces dans le répertoire qui est passé comme /cygdrive/c/Documents and Settings/user/My Jars et je cours java -cp $CLASSPATH somepackage.someclass, il renvoie une erreur indiquant que la classe and est introuvable, car la variable CLASSPATH est divisée après /cygdrive/c/Documents.

Quelqu'un peut-il m'aider à résoudre ce problème?

Répondre

10

Voir ceci article.

Vous pouvez joindre soit la pleine classpath à deux qoutes

java -classpath "C:/Documents and Settings/user/project/lib/axis.jar; C:/Documents and Settings/user/project/lib/axis-ant.jar;" TestClient 

ou chaque pot dans votre classpath

java -classpath "C:/Documents and Settings/user/project/lib/axis.jar"; "C:/Documents and Settings/user/project/lib/axis-ant.jar;" TestClient 

Dans votre cas quelque chose comme ça:

for JAR_FILE in `ls *.jar` 
do 
    CLASSPATH="$DIRECTORY_TO_LOOK_FOR_JARS/$JAR_FILE":$CLASSPATH 
done 

Difficile à voyez, mais j'ai bougé le double qoute de fermeture.