Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有管道的Ant run命令_Java_Ant - Fatal编程技术网

Java 带有管道的Ant run命令

Java 带有管道的Ant run命令,java,ant,Java,Ant,我必须实现命令: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> 所以,这就是问题所在:)当您从Ant运行java程序时,程序的输入和输出由Ant运行时捕获-您不能尝试使用该管道将它们重定向到其他地方

我必须实现命令:
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>

所以,这就是问题所在:)

当您从Ant运行java程序时,程序的输入和输出由Ant运行时捕获-您不能尝试使用该管道将它们重定向到其他地方


如果您想这样做,您可能会在执行
exec
任务时运气更好,尽管这可能会遇到同样的问题

实际上,您正在运行一个java命令

您需要使用Exec任务,但不确定是否也可以运行管道命令。试试看。

管道(|)只能在shell脚本中使用。您将它作为参数传递给java进程

因此,您需要执行一个shell脚本。您可以通过执行(比如)
bash-c
并将上述内容作为shell语句传递(尽管是内联的,您可以编写一个单独的脚本文件,但这里似乎有点开销)



另一个解决方案是将
java-jar test.jar page.xml | mysql-u user-p base
封装到一个单独的脚本中,并使用简单的
任务调用它。

我不知道这是否得到了解决,但我遇到了一个类似的问题,我使用以下方法解决了这个问题:

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


我只是想和大家分享。

解释为什么阿米莉的答案是正确的:

阿米莉的正确解决方案与布莱恩·阿格纽的解决方案之间的区别在于两者之间的细微差别。Brian将第二个arg作为“值”,而Amilie使用“line”

以下是为什么阿米莉的观点是正确的:

  • “value |单个命令行参数;可以包含空格字符。”

  • “line |以空格分隔的命令行参数列表。”



哇,我只是觉得它管用,但不是。。。我已经得到:没有这样的文件或目录从什么?你可能需要设置你的类路径(或类似的-别忘了你现在是从一个单独的进程中派生出来的)问题,应该是,但现在它写了:/usr/bin/java:/usr/bin/java:无法执行二进制文件耶,对我来说不起作用,但确实起作用。当然,我正在执行java以外的二进制代码,但仍然使用管道。
  <exec executable="bash">
    <arg value="-c"/>
    <arg line="java -jar test.jar page.xml | mysql -u user -p base"/>
  </exec>
<exec executable="bash">
    <arg value="-c"/>
    <arg line='"java -jar test.jar page.xml | mysql -u user -p base"'/>
</exec>