2008-12-22 4 views
3

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

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

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

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

вместо я

TurboBlenderApp arg1 arg2 

?

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

ответ

0

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

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

Хм. Есть ли способ рассказать JVM: Эй, я хочу запустить .jar-файл приложения, используя эту библиотеку, во втором .jar? (поэтому я могу отделить реализацию библиотеки от приложения) –

+0

@Jason: ответил, отредактировав ответ. –

+0

@ Джейсон: Да. java -cp myAppJar; myLibJar; TheApp arg1 arg2 TheApp - это имя класса. Если вы не хотите писать что-то вроде com.org.som.package.etc.App, вы можете создать класс с именем TheApp в пакете по умолчанию. – OscarRyz

1

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

Это, конечно, абсолютно трогательно и смешно. Перейти Java.

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

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

0

Это довольно легко:

Написать об этом TurboBlenderApp.cmd:

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

// иметь в виду Saua ответ о -cp и -jar

Тогда из в командной строке, которую вы только что пишете:

TurboBlenderApp arg1 arg2 

Ju как вы хотели.

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

2

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

+0

Интересно: мне нужно будет проверить launch4j. Благодаря! –

1

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

$ java -jar myapp.jar 

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

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

1

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

Смежные вопросы