java - CLASSPATH 中的空格

标签 java cygwin 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,它会抛出一个错误,指出未找到类 ,因为 CLASSPATH 变量在 /cygdrive/c/Documents 之后被拆分。

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

最佳答案

查看此 article .

您可以将完整的类路径包含在双引号中

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

很难看清,但我移动了结束双引号。

关于java - CLASSPATH 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003830/

相关文章:

c++ - 从 cygwin g++ 使用 STL std::transform 的问题

bash -/dev/stdin 与 herestring

linux - Make 无法看到除 gcc 之外的命令(配方)

java - 从一个窗口移动到另一个窗口

c# - 等待前先释放锁,等待后重新获取

java - 将 wget 与 Hadoop 一起使用?

java - 尽管 jar 位于类路径上,但 Ant -verbose 失败并显示 "package does not exist"

java - 对于 sendredirect ,哪个方法被调用 doGet 或 doPost()

sql - 无法在 Eclipse 中引用 jdbc.SQLServerDriver (ClassNotFoundException)

java - 包括 clojure 中的 jar