Как запустить несколько основных программ в исполняемом файле Java.банку?

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

Если лучший способ запустить это через муравья. Какой сценарий муравья я бы написал, Если бы хотел запустить... скажем, основные программы в пакетах com.приложение myapp.пакет1.главный, ком.приложение myapp.упаковке2.main и com.приложение myapp.упаковке3.главный. Заранее спасибо!

3 ответов


манифест jar позволяет дополнительно указать не более одного основного класса. Это вызывается при выполнении java С -jar флаг.

java -jar myapp.jar

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

java -classpath myapp.jar com.mypackage.app.Main01 && \
  java -classpath myapp.jar com.mypackage.app.Main02 && \
  java -classpath myapp.jar com.mypackage.app.Main03

приведенный выше пример породит три отдельных Java VM, каждый в своем собственном процессе. Очевидно, это не соответствует вашему требованию для "исполняемого jar".

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

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


вы можете создать один основной" основной " класс, который выполняет остальные.


вероятно, я бы придерживался манифестного решения, но для этого есть еще одна возможность:

Process p = Runtime.getRuntime().exec("java -jar another.jar");

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