Я присоединился к двум отдельным JAR-серверам, которые поделились большим количеством кода, в один JAR. Пока нет проблем, так как вы можете иметь более одного static void main()
в JAR.JAR с несколькими основными() - как начать второе приложение с первого раза?
Основное применение вызывается непосредственно:
java -jar myjar.jar arg1 arg2
Другое приложение требует явного вызова из ее альтернативной main()
:
java -classpath myjar.jar alternative.main arg1
Не большая проблема либо.
Однако, теперь я должен вызвать альтернативный приложение из в основной.
Я мог бы сделать это:
Runtime.getRuntime().exec("java -classpath myjar.jar alternative.main arg1");
Но это кажется мне не хватает какой-то утонченность. Есть ли еще более эффективный способ запускать второй вариант, альтернативный main()
?
Если в одном банке в любом случае, вы не можете просто ** ** вызов другой 'main' метод? Или вам нужны отдельные процессы операционной системы/JVM? –
1) Если вы вернетесь к использованию 'Process'. Прочитайте (и внесите) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html). Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. 2) Это действительно пахнет плохим дизайном, если только первое приложение. это приложение. панель запуска пульта. –
@AndrewThompson: Плохой дизайн, это должно быть одно приложение для начала. К сожалению, иногда вам приходится жить с суб-пар-дизайнами, потому что полномасштабный рефакторинг не вписывается в бюджет ... – DevSolar