我在x.java
中有c:\cygwin\programs\x.java
个程序,它使用y.jar
和z.jar
文件夹c:\cygwin\programs
。
在Windows中:
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)...
的情况下给出错误答案 0 :(得分:2)
你正在搞乱转义字符反斜杠\
。在基于Unix的环境中,最好使用/
作为路径分隔符。如果由于某种原因想要使用反斜杠,请使用附加反斜杠,即\\
将其视为路径中的文字。
由于上述原因,第一个两个语句不会导致正确的路径,从而导致失败。
答案 1 :(得分: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