Вызов основного метода Java с параметрами из Eclipse - PullRequest
31 голосов
/ 17 декабря 2008

Во время разработки (и для отладки) очень полезно запускать метод класса Java * public static void main (String [] argv) непосредственно из Eclipse (используя контекстное меню Run As).

Есть ли такой же быстрый способ указать параметры командной строки для запуска? Теперь я перехожу к «Диалогу запуска», перебираю различные настройки на вкладке, где я могу указать параметры виртуальной машины и программы и ввести их там. Слишком много шагов, плюс я не хочу смешивать более постоянные параметры конфигурации времени выполнения с одноразовыми параметрами вызова. Вместо этого я хочу установить флажок (или иметь отдельный пункт меню «Запуск от имени Java-приложения с командной строкой»), а затем каждый раз запрашивать командную строку (с хорошей историей).

Ответы [ 6 ]

50 голосов
/ 17 декабря 2008

Этот ответ основан на Eclipse 3.4, но должен работать в более старых версиях Eclipse.

При выборе Run As ... перейдите в настройки запуска.

На вкладке «Аргументы» конфигурации запуска Java настройте отображаемую переменную $ {string_prompt} (вы можете щелкнуть переменные, чтобы получить ее, или скопировать, чтобы установить ее напрямую).

Каждый раз, когда вы используете эту конфигурацию запуска (назовите ее так, чтобы она была у вас позже), вам будет предложено указать аргументы командной строки.

16 голосов
/ 17 декабря 2008

Uri не так, есть способ добавить параметры в метод main непосредственно в Eclipse, однако параметры не будут очень гибкими (некоторые динамические параметры разрешены). Вот что вам нужно сделать:

  1. Запустите свой класс один раз, как есть.
  2. Перейти к Run -> Run configurations...
  3. В левом списке выберите свой класс из списка под Java Application или введите его имя в поле фильтра.
  4. Выберите вкладку Аргументы и запишите свои аргументы в поле Program arguments. На всякий случай, если неясно, они разделены пробелами, поэтому "a b c" (без кавычек) будет означать, что вы передадите аргументы a, b и c в вашу программу.
  5. Запустите ваш класс снова, как в шаге 1.

Однако я рекомендую использовать класс JUnit / wrapper точно так же, как это сказал Ури, так как таким образом вы получаете намного лучший контроль над фактическими параметрами, чем при этом.

2 голосов
/ 17 декабря 2008

AFAIK, в Eclipse нет встроенного механизма для этого.

Самое близкое, что вы можете получить, - это создать оболочку, которая запрашивает у вас эти значения и вызывает (жестко закодированный) main. Затем вы получаете историю выполнения до тех пор, пока не очистите завершенные процессы. Существует два варианта: использовать JUNit, либо использовать инъекцию или параметр, чтобы ваша обертка всегда подключалась к правильному классу своего основного.

1 голос
/ 17 декабря 2008

Я не уверен, что вы используете, но мне кажется удобным, что обычно я использую не более нескольких параметров командной строки, поэтому каждый из этих сценариев получает конфигурацию одного запуска, и я просто выбираю тот, который хочу История запуска.

Функция, которую вы предлагаете, кажется излишней, IMO.

0 голосов
/ 10 апреля 2018

Если в строковом аргументе есть пробелы, сделайте следующее:

Выполнить> Запустить конфигурации> Приложение Java> Аргументы> Программные аргументы

  1. Заключите ваш строковый аргумент в кавычки
  2. Разделяйте каждый аргумент пробелом или новой строкой
0 голосов
/ 17 декабря 2008

Другая идея:

Поместите все ваши параметры в файл свойств (один параметр = одно свойство в этом файле), затем в ваш основной метод загрузите этот файл (используя Properties.load(*fileInputStream*)). Поэтому, если вы хотите изменить один аргумент, вам просто нужно отредактировать файл args.properties и запустить приложение без дополнительных действий ...

Конечно, это только для целей разработки, но может быть очень полезно, если вам приходится часто менять свои аргументы ...

...