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

エラーなし。

シグウィンで

(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

エスケープ文字のバックスラッシュを台無しにしてい\ます。Unix ベースの環境では/、パス区切りとして使用することをお勧めします。何らかの理由でバックラッシュを使用したい場合は、追加のバックスラッシュを使用\\して、パス内でリテラルとして扱います。

上記の理由により、最初の 2 つのステートメントが正しいパスにならず、失敗します。

于 2012-11-15T00:39:07.767 に答える
0

Cygwin は;文字を新しいコマンド ラインの開始として扱うため、(1) では個別のコマンドを実行しようとしています。

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

エラー メッセージは、jar ファイルをスクリプトとして直接実行しようとしている Cygwin からのものです。

(3) のように引数全体を引用する''か、セミコロンをエスケープできます。

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