2009-12-27 14 views
8

Ho un file eseguibile JAR. E ho uno script di build Ant che viene compilato e quindi crea questo file JAR. Vorrei che un'attività eseguisse anche il file JAR, ma ho un argomento da riga di comando che deve essere passato al JAR. È un file di configurazione. Il target di esecuzione è inferiorepassare un argomento riga di comando per JAR in uno script Ant

<target name="run"> 
    <java jar="build/jar/ShoutGen.jar" fork="true"/> 
    <arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/> 
</target> 

Quando provo a fare questo ed eseguirlo dall'interno di Eclipse ricevo

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. 

L'output di errore da Java è significato il mio errore in codice "non hai passa un file di configurazione come argomento "che esegue il backup dell'errore di ant di" Problema: impossibile creare attività o digitare arg ".

Quindi, come passare un argomento a un file JAR eseguito da Ant? È qualcosa che non dovresti fare?

risposta

16

Il tag <arg> deve essere figlio del tag <java>. Come questo:

<target name="run"> 
    <java jar="build/jar/ShoutGen.jar" fork="true"> 
     <arg line="/home/munderwo/workspace/ShoutGen-Java/ShoutGen.conf"/> 
    </java> 
</target> 

Nella tua domanda <arg> è un fratello di <java> e la linea di ragionamento non è mai passato al comando java.

6

L'istruzione arg non è nidificata correttamente nell'attività java. Ha bisogno di essere

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

si può fare con qualcosa di simile, quindi se non vengono specificati gli argomenti che continuerà in ogni caso:

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

Non per battere un cavallo morto, ma non vedo come questo sta affrontando il problema. – Dumpcats

Problemi correlati