2012-11-15 57 views
2

多个JAR文件的类路径我有计划在c:\cygwin\programs\x.javax.java它使用y.jarz.jar,同时也是该文件夹c:\cygwin\programs英寸设置在Cygwin的

在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

@AlG还有就是Java没有Cygwin的版本! java.exe是需要传递Windows风格路径的Windows程序。 – andrewdotn

回答

2

你正在搞乱转义字符反斜杠\。在基于Unix的环境中,最好使用/作为路径分隔符。如果由于某些原因想要使用反斜线,请使用附加反斜杠,即\\将其视为路径中的文字。

由于上述原因,第一个拖曳语句不会导致正确的路径,从而导致失败。

+0

什么是错误的(1),我只是使用'\\'作为转义字符':' – vjk

+0

@vjk你需要它吗?如果这是必需的,那么3将不会工作,对吧? 'c:'一起代表c盘。 –

0

Cygwin的对待;字符作为开始一个新的命令行,所以在(1)它试图从Cygwin的试图直接执行的jar文件执行分离命令

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

该错误消息是作为脚本。

你可以引用与''整个参数为(3),或逃避分号:

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

我猜测应该使用':'来分隔路径(比如在Unix中),第一个':'应该被移除(不需要它)。 – jahroy

+0

@jahroy如果java.exe是一个Cygwin程序,那会是真的 - 但它是一个Windows程序,需要传递Windows风格的参数,无论它是从Windows还是从Cygwin调用。 – andrewdotn

+0

明白了。意识到添加我的评论后。我仍然认为你不需要指定'C:'。你可以在DOS中引用没有它的路径:'cd \ Users \ buffoon \'可以正常工作。 – jahroy