从Cygwin设置CLASSPATH

时间:2011-05-28 17:03:18

标签: java bash cygwin classpath

我使用Eclipse开发Java,因此我有一个充满Eclipse Java Project文件夹的文件夹。 / bin文件夹驻留在每个文件夹中,因此要从Cygwin运行项目,必须将类路径(在我的系统上)设置为:“E:/ programming / java / workspace / SomeProject / bin”。由于我的文件夹中有大约40个项目,我宁愿创建一个脚本来添加CLASSPATH的路径。我的脚本似乎添加了CLASSPATH的路径,但是当我尝试运行Java时,我得到了一个未找到类的错误。在我的.bashrc中这是我的脚本:

JAVAWORKSPACE="/cygdrive/e/programming/java/workspace/*"
BIN="/bin;"
for f in $JAVAWORKSPACE
do
    if [ -d $f ] ; then
        export CLASSPATH="$f$BIN$CLASSPATH"
    fi
done

当我启动Cygwin并回显$ CLASSPATH时,所有目录都显示出来,但java无法找到这些类。我也尝试了JAVAWORKSPACE="E:\programming\java\workspace\*,但这导致没有添加到CLASSPATH中。如果我通过Windows设置并手动输入“E:/ programming / java / workspace / MyProject / bin”到CLASSPATH,命令行Java可以轻松找到类。怎么了?我不确定这是脚本的问题,还是CLASSPATH不喜欢unix风格的路径。如果我需要添加Windows路径,请帮我改变我的脚本来执行此操作。谢谢!

1 个答案:

答案 0 :(得分:2)

我现在没有设置Cygwin,但是几年前我遇到了这个问题。 Java对Cygwin路径名一无所知,而bash将单个反斜杠视为转义字符,在将其传输到java(c)之前将其剥离。如果你这样做

echo E:\programming\java\workspace\*

你会看到它输出E:programmingjavaworkspace *,而不是你所期待的。关键是要逃避转义字符,比如

E:\\programming\\java\\workspace\\*

甚至更好,请使用cygpath之类的this

相关问题