2009-07-27 33 views
23

Tôi phải thực hiện lệnh: java -jar test.jar page.xml | mysql -u user -p base trong kiến. Vì vậy, tôi đã thử với tác vụ này:Lệnh chống ma sát với đường ống

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

Nhưng tôi đã có ngoại lệ với ống - "|" :

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

Vì vậy, đó là vấn đề :)

Trả lời

58

Chỉ có thể sử dụng đường ống (|) trong tập lệnh hệ vỏ. Bạn đang chuyển nó như một đối số cho quá trình java.

Vì vậy, bạn cần thực thi tập lệnh trình bao. Bạn có thể làm điều này bằng cách thực hiện (nói) bash -c và đi qua phía trên như một tuyên bố vỏ (mặc dù inline - bạn có thể viết một tập tin kịch bản riêng biệt nhưng có vẻ như một chút của một overhead đây)

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

Xin cảm ơn các bạn! –

+0

Nó giúp, hoặc nó hoạt động? –

+0

wow, tôi chỉ nghĩ rằng nó hoạt động, nhưng không ... Tôi đã có: Không có tập tin hoặc thư mục như vậy –

0

Khi bạn chạy một chương trình java từ Ant, các đầu vào và ra khỏi chương trình được bắt bởi thời gian chạy Ant - bạn không thể cố gắng và chuyển hướng họ ở những nơi khác sử dụng đường ống đó.

Nếu bạn muốn làm điều đó, bạn có thể có may mắn hơn với nhiệm vụ exec, mặc dù điều đó có thể gặp phải cùng một vấn đề.

0

Có bạn đang thực sự chạy lệnh java.

Bạn cần sử dụng tác vụ Exec http://ant.apache.org/manual/Tasks/exec.html nhưng không chắc liệu bạn cũng có thể chạy lệnh đường ống hay không. Hãy thử một lần.

1

Một giải pháp khác sẽ quấn java -jar test.jar page.xml | mysql -u user -p base thành một tập lệnh riêng biệt và gọi nó bằng công việc <exec> đơn giản.

7

Tôi không biết nếu điều này là bao giờ được giải quyết, nhưng tôi đã gặp vấn đề tương tự mà tôi giải quyết bằng cách sử dụng như sau:

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

Chỉ cần nghĩ rằng tôi sẽ chia sẻ.

+0

Điều này làm việc cho tôi! Câu trả lời được chấp nhận không. – Dexter

Các vấn đề liên quan