Java - Как ввести аргументы времени выполнения (основного метода), дважды щелкнув файл JAR? - PullRequest
4 голосов
/ 26 февраля 2010

Я сталкивался с этой проблемой несколько раз. Если я упаковываю приложение Java в исполняемый файл JAR, который принимает аргументы от пользователя, то пользователь должен вызвать программу (файл JAR) из командной строки с помощью следующей команды:

java -jar "jar-file-name.jar"

Но я хочу, чтобы всякий раз, когда пользователь дважды щелкает по исполняемому файлу jar (которому нужны аргументы пользователя), появляется окно (окно командной строки), которое появилось бы, если бы мы вызвали файл jar из командной строки .

Я знаю, что одним из решений этого является использование командного файла .bat для запуска файла JAR. Есть ли другое решение?

Ответы [ 3 ]

5 голосов
/ 26 февраля 2010

Чтобы объяснить, почему:

Существует 2 запуска Java JVM exe:

  • java.exe: на основе консоли - обеспечивает консольный ввод / вывод.
  • javaw.exe: для приложений с графическим интерфейсом - скрывает консоль.

Расширения файлов JAR по умолчанию связаны с javaw.exe, поэтому при двойном щелчке по ним вы не получаете консоль.

Ответы, которые дали другие, и добавив мои собственные:

  • переписать ваше приложение, чтобы оно использовало элементы графического интерфейса Java для ввода и вывода вместо System.in/System.out. Это может быть слишком сложным для того, что вам нужно.

  • Вы упомянули создание пакетного файла для запуска Java JVM на основе консоли (java.exe). Вы также можете создать ярлык Windows, задающий командную строку: java -jar jar-file-name.jar

  • Вы можете изменить ассоциации файлов Windows для .jar (но, как правило, это плохая идея - новые установки Java могут сбросить это, и это будет означать, что все java-приложения, запускаемые из jars, будут иметь консоль)

  • Вы можете использовать средство запуска Java, например WinRun4J , которое позволяет просто удалить дважды щелкаемый EXE-файл со значком и файлом конфигурации, который определяет, как должно работать ваше приложение (с / без консоль, а также с любыми другими параметрами JVM и командной строки)

Лично я выбрал последний вариант в своем проекте - я сделал файл jar неисполняемым, и пользователь должен дважды щелкнуть по EXE. Это также позволило мне указать хороший значок для моего проекта и предоставить несколько опций при запуске (режим отладки / без отладки) просто с помощью другого файла exe / config.

2 голосов
/ 26 февраля 2010

Вам потребуется переназначить ассоциацию обозревателя для «.jar» на java.exe вместо javaw.exe. Это довольно сомнительная вещь - возможно, имеет смысл создать окно вывода консоли. Конечно, вы можете просто вызвать диалоговое окно для ввода пользователем необходимых параметров выполнения, если они не указаны в командной строке.

Здесь есть рабочий код для вывода на консоль JTextArea здесь .

0 голосов
/ 26 февраля 2010

Это функция операционной системы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...