2011-07-19 10 views
0

私はantスクリプトを使ってjarファイルを実行しようとしていました。このant java task with space issue

<java jar="${jar.file}" fork="true" failonerror="true"> 
    <arg line="${jar.args}"/> 
</java> 

jar.file同様のjarファイルへの完全なパスを持っており、はそれにいくつかのスペースが含まれています。

Linuxでこれを実行したときに問題はありませんでした。しかし、私がWindowsで同じことをするとエラーが出ます。 javaタスクがjarファイルを見つけられませんでした。私はファイルパスを引用符( ")で囲んだり、スペースを"に置き換えたり、バックスラッシュでエスケープしようとしたりしたようなさまざまなバリエーションを試しましたが、これ以外の方法はありませんか?私が何かを見逃してしまったのですか?

PS私は今、私のWindows PCから離れています。回避策として、JarをC:\にコピーして使用しました

+0
+0

これは次のようなものでした joe

+1

私はあなたのantスクリプトをこれは完全に機能しました。 「ドキュメントと設定」は単なる仮想フォルダです。コマンドラインでjarを実行できますか(antなし、java -jarのみ)? – Daniel

答えて

0

プロパティ内のスペースの問題を処理するための推奨される方法は、 余分な 'に置き換えることです。これは、ほとんどの場合に機能するはずです。スパなしのパスces

<java jar="'${jar.file}'" fork="true" failonerror="true"> 
    <arg line="${jar.args}"/> 
</java> 

は、私のコメントで既に述べたように動作します。

編集
あなたはそれはので、私は何かを考え、実際には唯一のjar属性
との相対パスでは動作しません。おっしゃるとおり

<project> 
<property name="jar.file" value="foobar.jar"/> 
<property name="jar.dir" value="/home/rosebud/temp/path with blanks"/> 

<java 
    dir="${jar.dir}" 
    jar="${jar.dir}/${jar.file}" 
    fork="true" 
    failonerror="true" 
    > 
    <arg value="..." /> 
</java> 
</project> 

、それが予期せずに動作しますまた、feのようにパス内にスペースがある

"'${property with blanks}'" 

が、それはしていません:

上記のスニペットではスペースの問題に対処するための標準的な方法は、他の例のように収まるだろうと思いました。

+0

これは動作しません。 'java'タスクはjarファイルへの相対パスを提供し、現在のディレクトリパスの前に置かれ、jarコマンドがjarファイルの検索に失敗すると考えられます。 私が言及したスペースの問題は、実際問題ではありませんでした。私はもう一度試してみるとうまくいきます。これをチェックしていただきありがとうございます。 – joe