2

我有程序x.javac:\cygwin\programs\x.java它使用y.jarz.jar也在文件夹中c:\cygwin\programs

在窗口中:

c:cygwin\programs>javac -classpath c:\cygwin\programs\y.jar;c:\cygwin\programs\z.jar x.java

没有错误。

在cygwin中

(1)

$javac -classpath c\:/cygwin/programs/y.jar;c\:/cygwin/programs/z.jar x.java 

Errors: $'PK\003\004': Command not found.

(2)

$javac -classpath c:\cygwin\programs\y.jar;c:\cygwin\programs\z.jar x.java 

Errors: -bash command Command not found.

(3)

$javac -classpath 'c:/cygwin/programs/y.jar;c:/cygwin/programs/z.jar' x.java

No error.

为什么在(1),(2)的情况下会出错......

4

2 回答 2

2

你搞砸了转义字符 back-slash \。在基于 Unix 的环境中,最好/用作路径分隔符。如果出于某种原因要使用反斜杠,请使用附加的反斜杠\\,即将其视为路径中的文字。

由于上述原因,前两条语句不会导致正确的路径并因此失败。

于 2012-11-15T00:39:07.767 回答
0

Cygwin 将;字符视为开始一个新的命令行,因此在 (1) 中它试图执行单独的命令

$ javac -classpath c\:/cygwin/programs/y.jar
$ c\:/cygwin/programs/z.jar x.java

错误消息来自 Cygwin 试图将 jar 文件直接作为脚本执行。

您可以使用 (3) 中的方法引用整个参数'',或者转义分号:

$ javac -classpath c\:/cygwin/programs/y.jar\;c\:/cygwin/programs/z.jar x.java
于 2012-11-16T18:46:23.640 回答