2009-07-27 131 views
23

我必須執行命令:java -jar test.jar page.xml | mysql -u user -p base 在螞蟻。所以我已經嘗試過這個任務:螞蟻運行命令與管道

<java jar="test.jar" fork="true"> 
    <arg line="page.xml | mysql -u user -p base"/> 
</java> 

但我有異常與管 - 「|」 :

java.lang.IllegalArgumentException: Input already set; can't set to | 

所以,這就是問題所在:)

回答

58

管道(|)只能在shell腳本中使用。你將它作爲參數傳遞給java進程。

所以你需要執行一個shell腳本。你可以通過執行這樣做(說)bash -c並通過上述的殼聲明(儘管直列 - 你可以寫一個單獨的腳本文件,但在這裏,似乎有點開銷)

<exec executable="bash"> 
    <arg value="-c"/> 
    <arg value="java -jar test.jar page.xml | mysql -u user -p base"/> 
    </exec> 
+0

謝謝你們,它有幫助! – 2009-07-27 10:29:01

+0

它有幫助,還是有用? – 2009-07-27 10:31:01

0

當您從螞蟻,輸入和輸出本程序是由螞蟻捕獲運行Java程序 - 你不能嘗試,將用戶重定向在別處使用該管道。

如果你想這樣做,你可能會更好的運氣與exec任務,雖然這可能會遭受同樣的問題。

1

另一種解決方案將java -jar test.jar page.xml | mysql -u user -p base包裝成一個單獨的腳本,並用簡單的<exec>任務調用它。

7

我不知道這是否是以往任何時候都解決了,但我有我通過以下解決了類似的問題:

<exec executable="bash"> 
    <arg value="-c"/> 
    <arg line='"java -jar test.jar page.xml | mysql -u user -p base"'/> 
</exec> 

只是想我也有同感。