Средства запуска командной строки Java - PullRequest
3 голосов
/ 22 декабря 2008

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

У меня вопрос: есть ли рекомендуемый способ упростить создание экземпляров JVM в командной строке определенным образом?

например. вместо того, чтобы требовать от пользователя ввода загадочной подверженной ошибкам команды, такой как:

java -cp TurboBlenderLib.jar -jar TurboBlenderApp.jar -DFoo=Bar arg1 arg2

вместо этого я делаю

TurboBlenderApp arg1 arg2

Полагаю, я мог бы использовать сценарии оболочки (включая командные файлы win32 ... gacckkk), просто я не очень хорош в этом + Мне было интересно, есть ли более простой независимый от платформы способ запуска Java приложение из командной строки.

Ответы [ 8 ]

5 голосов
/ 23 декабря 2008
  1. Когда вы используете -jar, -cp (и переменная CLASSPATH) будут игнорироваться
  2. Просто предоставьте исполняемый файл. «java -jar TheApp <whateverargumentsyouwant>» не должно быть слишком сложным (однако в манифесте jar файлов может быть атрибут Class-Path ).
  3. если это слишком сложно, напишите графический интерфейс
  4. или предоставьте эти сценарии оболочки / командные файлы. Писать их тоже не сложно.
2 голосов
/ 23 декабря 2008

Если вы просто хотите упростить локальное выполнение, используйте командный файл или даже просто создайте собственный ярлык. Если вы хотите создать модуль запуска и упаковать исполняемый файл jar и библиотеки, необходимые для развертывания, используйте что-то вроде Launch4j .

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

Другое решение найдено в Джакартской Общины, как всегда: commons-launcher .

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

Если вы используете java -jar для запуска приложения, вы можете добавить дополнительные jar-файлы в classpath, добавив запись Class-Path в манифест основного jar-файла. См. спецификацию jar-файла для получения дополнительной информации.

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

По какой-то причине этот трюк просто не обходится. Вам нужно создать собственный манифест для вашего jar-файла, который определяет свойство Main-class:, и включить в jar-файл все файлы классов, которые вы используете. Тогда все, что вам нужно, это запустить

$ java -jar myapp.jar

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

Это описано в одном из Java Tutorials .

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

Сценарии оболочки и командные файлы являются стандартным способом выполнения того, что вы хотите. (Посмотрите на любой важный продукт Java.)

Это, конечно, абсолютно жалко и нелепо. Go Java.

Ваша альтернатива - написать небольшую программу на C, которая делает то, что вам нужно (создает процесс Java), и компилировать ее для каждой из поддерживаемых вами платформ. (C - действительно независимый от платформы язык).

В любом случае вам нужно будет предпринять шаги, зависящие от платформы, чтобы ваше приложение чувствовало себя как дома в ОС. В OS X вам нужно будет сделать пакет .app, в Windows вам нужно упаковать по крайней мере значок и информацию о версии в EXE-файл. Для Linux вполне достаточно сценариев оболочки. : -)

0 голосов
/ 23 декабря 2008

Это довольно просто:

Запишите это в TurboBlenderApp.cmd:

java -cp TurboBlenderLib.jar -jar TurboBlenderApp.jar -DFoo=Bar %1 %2

// Имейте в виду ответ saua о -cp и -jar

Затем из командной строки вы просто пишете:

TurboBlenderApp arg1 arg2

Так, как вы хотели.

Если в Unix / Linux замените th4e% 1% 2 на $ 1 $ 2 и убедитесь, что у вашего приложения есть права на выполнение (если вы не знаете, как это сделать, я думаю, вам это тоже не нужно)

0 голосов
/ 22 декабря 2008

Пакетный файл сделает эту работу. Поместите точную команду, которую вы хотите выполнить в файл myProg.bat и запустите ее.

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