2012-11-15 58 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