Запуск Java-программы несколько раз на Mac - PullRequest
2 голосов
/ 26 ноября 2011

Q. Есть ли способ дважды запустить Java-программу на Mac, как в Windows?

Ответы [ 5 ]

5 голосов
/ 06 декабря 2011

Вы не указываете, хотите ли вы запустить простой .jar или пакет приложений, поэтому я приведу примеры для обоих.Чтобы запустить несколько экземпляров пакета приложений в OS X, вы можете использовать следующий прием;откройте Терминал и запустите приложение с помощью этой команды:

open -n /path/to/your/java.app

Каждый раз, когда вы вызываете эту команду, открывается новый экземпляр.

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

Если вы пытаетесь запустить jar, вы можете просто вызвать

java -jar /path/to/your/java.jar

нескольковремя запуска нескольких экземпляров.

Чтобы запустить java-приложение изнутри java-приложения под OSX, вы должны сделать что-то вроде этого:

В случае простого jar:

File jarFile = new File("/path/to/your/jarFile.jar");
Runtime.getRuntime().exec(new String[] { "java", "-jar", jarFile.getAbsolutePath() });

В случае пакета приложений:

File jarFile = new File("/path/to/your/jarFile.app");
final String[] command = { "open", "-n", jarFile.getAbsolutePath() };
Runtime.getRuntime().exec(command);
0 голосов
/ 26 ноября 2011

Предполагается, что вы используете клиентскую версию кода в вашей системе и пытаетесь подключиться к хосту. Сначала вам нужно, чтобы сервер работал на обеих машинах, B и C в вашем случае. Во-вторых, код клиента, который вы используете, должен считывать IP-адрес и порт для подключения. Он не должен быть жестко запрограммирован, иначе вам придется изменить код и перестроить его для сервера B. Это должно помочь вам.

Думаю, я ответил на ваш запрос. :)

0 голосов
/ 26 ноября 2011

Может быть, это вопрос с подвохом, но я бы открыл два окна терминала и запустил его один раз на каждом терминале ...

0 голосов
/ 26 ноября 2011

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

Многие приложения Java используют этот прием для предотвращенияПользователь может открыть несколько экземпляров своей программы, проверив, используется ли определенный порт.В этом случае вы не можете запустить более одного экземпляра программы.

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

0 голосов
/ 26 ноября 2011

Я не совсем понимаю проблему.Но почему бы вам не абстрагировать его в метод, вместо того, чтобы называть его программой и вызывать эту подпрограмму дважды.Или порождает две темы?

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