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.
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
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 .
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");
....
}
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.