web-dev-qa-db-fra.com

Passer des arguments de ligne de commande à un fichier JAR exécutable

J'ai construit un fichier JAR exécutable à partir d'un projet Eclipse qui traite un fichier XML donné et extrait le texte brut. Cependant, cette version nécessite que le fichier soit codé en dur dans le code.

Y a-t-il un moyen de faire quelque chose comme ça

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

et avez le jar exécuter sur le fichier XML?

J'ai fait quelques recherches et tous les exemples donnés concernent la compilation du fichier JAR sur la ligne de commande et aucun ne traite de la transmission d'arguments.

26
Jason

Pourquoi pas ?

Modifiez simplement votre Main-Class pour recevoir des arguments et agir sur celui-ci.

public class wiki2txt {

    public static void main(String[] args) {

          String fileName = args[0];

          // Use FileInputStream, BufferedReader etc here.

    }
}

Spécifiez le chemin complet dans la ligne de commande.

Java -jar wiki2txt /home/bla/enwiki-....xml
32
Kal

Vous pouvez également définir une propriété Java, c'est-à-dire une variable d'environnement, sur la ligne de commande et l'utiliser facilement n'importe où dans votre code.

La ligne de commande se ferait de cette façon:

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

et le code Java accède à la valeur comme ceci:

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

Voir cette question à propos de argument passant en Java .

28
Kelly S. French

Vous pouvez passer les arguments du programme sur la ligne de commande et les obtenir dans votre application Java comme suit:

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

Sinon, vous transmettez une propriété système en modifiant la ligne de commande en:

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

et votre classe principale à:

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

Lorsque vous exécutez votre application de cette manière, l'exécutable Java lit le MANIFEST dans votre jar et trouve la classe principale que vous avez définie. Dans cette classe, vous avez une méthode statique appelée main. Dans cette méthode, vous pouvez utiliser les arguments de la ligne de commande.

0
eppesuig