Программы запуска командной строки Java

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

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

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

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

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

TurboBlenderApp arg1 arg2

?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 458
8

Ответы 8

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

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

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

Jason S 23.12.2008 01:09

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

OscarRyz 23.12.2008 02:12

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

Это, конечно, абсолютно пафосно и нелепо. Перейти на Java.

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

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

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

Запишите это в 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 и убедитесь, что у вашего приложения есть права на выполнение (если вы не знаете, как это сделать, я думаю, вам это тоже не понадобится)

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

Интересно: мне нужно будет проверить launch4j. Спасибо!

Jason S 23.12.2008 01:11

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

$ java -jar myapp.jar

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

Это описано в одном из Учебники по Java.

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

Другое решение, как всегда, находится в Джакарте Commons: обычная пусковая установка.

Другие вопросы по теме