Передача аргументов командной строки в runnable JAR
Я построил runnable JAR из проекта Eclipse, который обрабатывает данный XML файл и извлекает простой текст. Однако для этой версии требуется, чтобы файл был жестко закодирован в коде.
Есть ли способ сделать что-то вроде этого
java -jar wiki2txt enwiki-20111007-pages-articles.xml
и выполнить jar в файле xml?
Я немного осмотрелся, и все приведенные примеры связаны с компиляцией JAR в командной строке, и никто не имеет дело с передачей аргументов.
Ответы
Ответ 1
Почему бы и нет?
Просто измените свой Main-Class
, чтобы получить аргументы и действовать по аргументу.
public class wiki2txt {
public static void main(String[] args) {
String fileName = args[0];
// Use FileInputStream, BufferedReader etc here.
}
}
Укажите полный путь в командной строке.
java -jar wiki2txt /home/bla/enwiki-....xml
Ответ 2
Вы также можете установить свойство Java, то есть переменную среды, в командной строке и легко использовать ее в любом месте вашего кода.
Командная строка будет выполнена следующим образом:
c:/" > java -jar -Dmyvar = enwiki-20111007-pages-articles.xml wiki2txt
и код java получает доступ к значению, подобному этому:
String context = System.getProperty("myvar");
См. этот вопрос о аргументе, передаваемом в Java.
Ответ 3
Вы можете передать аргументы программы в командной строке и получить их в своем приложении Java следующим образом:
public static void main(String[] args) {
String pathToXml = args[0];
....
}
В качестве альтернативы вы передаете системное свойство, изменив командную строку на:
java -Dpath-to-xml=enwiki-20111007-pages-articles.xml -jar wiki2txt
и ваш основной класс:
public static void main(String[] args) {
String pathToXml = System.getProperty("path-to-xml");
....
}
Ответ 4
Когда вы запускаете приложение таким образом, java exccecutable читает MANIFEST внутри вашей банки и набирает основной класс, который вы определили. В этом классе у вас есть статический метод main. В этом методе вы можете использовать аргументы командной строки.