我有一个可执行文件JAR。我有一个Ant构建脚本,可以编译然后创建这个JAR文件。我想要一个运行JAR文件的任务,但是我有一个需要传递给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文件?这是你不应该做的事吗?
答案 0 :(得分:16)
<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
命令。
答案 1 :(得分:6)
您的arg语句未正确嵌套在java任务中。它必须是
<java jar="...">
<arg line="..." />
</java>
答案 2 :(得分:-3)
你可以用这样的东西来做,所以如果没有指定参数,它仍然会继续:
public static void main(String[] args) {
try {
String one = args[0];
String two = args[1];
}
catch (ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBoundsException caught");
}
finally {
}
}