在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 { 

    } 
} 
+0

不打一死马,但我没有看到这是如何解决这个问题的。 – Dumpcats 2015-10-07 18:40:33