CLASSPATH中的空格

我正在使用Windows PC并在其上安装了cygwin! 我已将所有jar子组织在几个目录中的目录下! 我正在编写一个bash脚本来通过迭代作为参数传递的目录来设置CLASSPATH ,如下所示:

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

每当传递目录中的空格如/cygdrive/c/Documents and Settings/user/My Jars并运行java -cp $CLASSPATH somepackage.someclass ,它会抛出一个错误,指出该类and没有找到,因为在/cygdrive/c/Documents之后,CLASSPATH变量会被拆分。

有人可以帮我解决这个问题吗?

看到这篇文章 。

您可以在double qoutes中包含完整的类路径

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

或者类路径中的每个jar

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

就你的情况而言:

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

很难看,但我移动了收盘双qoute。