2011-11-14 30 views
24

Creé un JAR ejecutable desde un proyecto de Eclipse que procesa un archivo XML dado y extrae el texto sin formato. Sin embargo, esta versión requiere que el archivo esté codificado en el código.Pasando los argumentos de la línea de comandos al JAR ejecutable

¿Hay una manera de hacer algo como esto

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

y tiene el frasco se ejecutan en el archivo XML?

He hecho un poco de mirar alrededor, y todos los ejemplos dados tienen que ver con compilar el JAR en la línea de comandos, y ninguno se ocupa de pasar argumentos.

Respuesta

29

¿Por qué no?

Simplemente modifique su Main-Class para recibir argumentos y actuar según el argumento.

public class wiki2txt { 

    public static void main(String[] args) { 

      String fileName = args[0]; 

      // Use FileInputStream, BufferedReader etc here. 

    } 
} 

Especifique la ruta completa en la línea de comandos.

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

Gracias por la aclaración. Solo las veces previas que tuve que presentar argumentos para un programa Java fueron a través de ejecuciones solo de eclipse. Ninguno de ellos eran productos independientes, y no me di cuenta de que el mismo principio es cierto. – Jason

+0

¿Por qué "InputStream inputStream = MyClass.class.getResourceAsStream (args [0]);" ¿no trabajo? –

+0

@ArthurEirich Eso suena como una pregunta diferente. Imprima su "args [0]" ... si eso imprime el valor correcto, entonces usted fue capaz de pasar exitosamente args de línea de comando a un archivo jar. – Kal

4

Puede pasar argumentos del programa en la línea de comandos y conseguir que en su aplicación Java como esto:

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

Alternativamente se pasa una propiedad del sistema al cambiar la línea de comandos para:

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

y su clase principal a:

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

Cuando ejecutas tu aplicación de esta manera, el archivo java executable lee el MANIFIESTO dentro de tu jar y encuentras la clase principal que definiste. En esta clase, tienes un método estático llamado main. En este método, puede usar los argumentos de línea de comando.

26

También puede establecer una propiedad de Java, es decir, una variable de entorno, en la línea de comandos y usarla fácilmente en cualquier lugar de su código.

La línea de comandos se llevaría a cabo de esta manera:

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

y el código Java accede el valor de la siguiente manera:

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

Ver esta pregunta acerca de argument passing in Java.

+3

Una propiedad de Java no es una variable de entorno. Pueden servir para el mismo propósito, pero son diferentes tipos de cosas. – devdanke

Cuestiones relacionadas