【发布时间】:2019-06-24 17:20:21
【问题描述】:
我正在尝试使用 ant 通过 mpirun 运行我的单元测试。我已将任务指定为:
<target name="unitTest" depends="buildUnitTest">
<mkdir dir="reports"/>
<junit fork="yes" jvm="mpirun java" printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="./bin"/>
<pathelement location="/usr/share/java/junit4.jar"/>
</classpath>
<jvmarg value="-DDIM=3"/>
<jvmarg value="-ea"/>
<formatter type="plain"/>
<batchtest todir="reports">
<fileset dir="test">
<include name="haparanda/utils/*Test.java"/>
<include name="haparanda/iterators/*Test.java"/>
<exclude name="haparanda/iterators/FieldIteratorTest.java"/>
<include name="haparanda/grid/*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
运行例如:
mpirun java -ea -DDIM=3 -cp ./bin:/usr/share/java/junit4.jar org.junit.runner.JUnitCore haparanda.grid.ComputationalComposedBlockTest
从命令行工作正常。但是,当我运行时:
ant unitTest
我收到以下错误:
BUILD FAILED
.../build.xml:28: Process fork failed.
使用详细标志运行 ant 我被告知我收到了带有错误消息的 IOException:
Cannot run program "mpirun java": error=2, No such file or directory
当我指定 mpirun 和 Java 的完整路径时也是如此:
<junit fork="yes" jvm="/home/malin/bin/openmpi/bin/mpirun /usr/bin/java" printsummary="yes" haltonfailure="yes">
给我:
.../build.xml:28: Process fork failed.
at ...
Caused by: java.io.IOException: Cannot run program "/home/malin/bin/openmpi/bin/mpirun /usr/bin/java": error=2, No such file or directory
我怎样才能做到这一点?
【问题讨论】:
-
编写一个名为
mpirun_java.sh的脚本调用mpirun java,并让jvm指向它。 -
有效!谢谢!你知道为什么我不能让jvm直接指向“mpirun java”吗?
-
我猜
ant需要一个文件来执行,而不是一个文件后跟参数。 -
看看stackoverflow.com/questions/25039864/… ant try
jvmarg,如果可行,那就更优雅了。 -
确实如此! (是的,它奏效了!)