2009-12-27 168 views
8

我有一個可執行文件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文件呢?這是你不應該做的事嗎?

回答

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命令。

6

您的arg語句沒有正確嵌套在java任務中。它需要

<java jar="..."> 
    <arg line="..." /> 
</java> 
-2

你可以像這樣做,因此,如果沒有指定參數,將仍然繼續:

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