在Ant脚本中将命令行参数传递给JAR
问题描述:
我有一个可执行文件JAR。我有一个Ant编译脚本,然后创建这个JAR文件。我想要一个任务来运行JAR文件,但我有一个需要传递给JAR的命令行参数。这是一个配置文件。 run目标低于在Ant脚本中将命令行参数传递给JAR
<target name="run">
<java jar="build/jar/ShoutGen.jar" fork="true"/>
<arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/>
</target>
当我试图做到这一点,在Eclipse中运行它,我得到
Buildfile: /home/munderwo/workspace/ShoutGen-Java/build.xml
run:
[java] No config file passed as an argument. Please pass a configuration file
[java] Java Result: 16
BUILD FAILED
/home/munderwo/workspace/ShoutGen-Java/build.xml:24: Problem: failed to create task or type arg
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
从Java输出误差是我编码的错误,意思是“你没有通过的配置文件作为参数“,它支持”问题:未能创建任务或输入arg“的蚂蚁错误。
那么如何将参数传递给Ant中的已执行JAR文件呢?这是你不应该做的事吗?
答
<arg>
标记应该是<java>
标记的子标记。就像这样:
<target name="run">
<java jar="build/jar/ShoutGen.jar" fork="true">
<arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/>
</java>
</target>
在你的问题<arg>
是<java>
兄弟和参数的行不会传递到java
命令。
答
您的arg语句没有正确嵌套在java任务中。它需要
<java jar="...">
<arg line="..." />
</java>
答
你可以像这样做,因此,如果没有指定参数,将仍然继续:
public static void main(String[] args) {
try {
String one = args[0];
String two = args[1];
}
catch (ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBoundsException caught");
}
finally {
}
}
不打一死马,但我没有看到这是如何解决这个问题的。 – Dumpcats 2015-10-07 18:40:33