Подтвердить что ты не робот

Передача аргументов командной строки в runnable JAR

Я построил runnable JAR из проекта Eclipse, который обрабатывает данный XML файл и извлекает простой текст. Однако для этой версии требуется, чтобы файл был жестко закодирован в коде.

Есть ли способ сделать что-то вроде этого

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

и выполнить jar в файле xml?

Я немного осмотрелся, и все приведенные примеры связаны с компиляцией JAR в командной строке, и никто не имеет дело с передачей аргументов.

4b9b3361

Ответ 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. В этом методе вы можете использовать аргументы командной строки.