Java: запустить два разных приложения из одного JAR? - PullRequest
1 голос
/ 10 апреля 2011

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

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

java -jar требует Main-Class в манифесте.И кажется, что я не могу заставить его работать без ключа -jar.

Кстати, клиент и сервер должны иметь возможность работать бок о бок, конечно.

Ответы [ 2 ]

6 голосов
/ 10 апреля 2011

Вы всегда можете иметь два основных класса в jar, а затем использовать их в зависимости от того, хотите ли вы запустить клиент или сервер, например:

java -cp yourapp.jar com.your.app.ClientMain

и

java -cp yourapp.jar com.your.app.ServerMain

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

5 голосов
/ 10 апреля 2011

Да, создайте основной класс, который принимает аргумент, и используйте этот аргумент, чтобы определить, запускаете ли вы клиент или сервер:

 public class MyMainClass
 {
      public static void Main(String[] args)
      {
           if (args.length != 0 && args[1].toLowerCase().equals("server"))
                /* launch the server */;
           else
           {
                /* launch the client */ 
           }

      }
 }

Вот как я бы это сделал.

...