2011-11-14 18 views
24

Ho creato un JAR eseguibile da un progetto Eclipse che elabora un determinato file XML ed estrae il testo normale. Tuttavia, questa versione richiede che il file sia hardcoded nel codice.Passaggio agli argomenti della riga di comando per eseguire JAR

C'è un modo per fare qualcosa di simile

java -jar wiki2txt enwiki-20111007-pages-articles.xml 

e hanno il vaso eseguire sul file XML?

Ho fatto un po 'di ricerche, e tutti gli esempi forniti hanno a che fare con la compilazione del JAR sulla riga di comando, e nessuno si occupa di passare argomenti.

risposta

29

Perché no?

Basta modificare il Main-Class per ricevere argomenti e agire sull'argomento.

public class wiki2txt { 

    public static void main(String[] args) { 

      String fileName = args[0]; 

      // Use FileInputStream, BufferedReader etc here. 

    } 
} 

specificare il percorso completo nella riga di comando.

java -jar wiki2txt /home/bla/enwiki-....xml 
+0

Grazie per il chiarimento. Solo le volte precedenti in cui ho dovuto inserire argomenti per un programma Java avvenivano attraverso le esecuzioni di solo Eclipse. Nessuno di essi era un prodotto autonomo e non avevo realizzato che lo stesso principio fosse valido. – Jason

+0

Perché "InputStream inputStream = MyClass.class.getResourceAsStream (args [0]);" non funziona? –

+0

@ArthurEirich Sembra una domanda diversa. Stampa il tuo "args [0]" ..if che stampa il giusto valore, allora sei stato in grado di passare con successo gli argomenti della riga di comando a un file jar. – Kal

4

È possibile passare argomenti del programma sulla riga di comando e portarli nella vostra applicazione Java in questo modo:

public static void main(String[] args) { 
    String pathToXml = args[0]; 
.... 
} 

In alternativa si passa una proprietà di sistema modificando la riga di comando per:

java -Dpath-to-xml=enwiki-20111007-pages-articles.xml -jar wiki2txt

e la classe principale:

public static void main(String[] args) { 
    String pathToXml = System.getProperty("path-to-xml"); 
.... 
} 
0

Quando si esegue l'applicazione in questo modo, java excecutable legge il MANIFEST all'interno del proprio barattolo e trova la classe principale definita. In questa classe hai un metodo statico chiamato main. In questo metodo puoi usare gli argomenti della riga di comando.

26

È anche possibile impostare una proprietà Java, ad esempio la variabile di ambiente, sulla riga di comando e utilizzarla facilmente in qualsiasi punto del codice.

La riga di comando sarebbe stato fatto in questo modo:

c: /> java -jar -Dmyvar = enwiki-20111007-pagine-articles.xml wiki2txt

e il codice Java accede il valore in questo modo:

String context = System.getProperty("myvar"); 

Vai a questa domanda su argument passing in Java.

+3

Una proprietà Java non è una variabile di ambiente. Possono servire allo stesso scopo, ma sono diversi tipi di cose. – devdanke

Problemi correlati