Создание исполняемого jar из 2 других исполняемых jar

Я хочу создать один исполняемый файл jar из 2 других исполняемых файлов jar.
Так что я работаю над проектом ставок, и у меня есть 2 проекта, клиент и монитор. Я создал их файлы jar, и все в порядке.
Но есть ли способ объединить их файлы jar, чтобы я мог запускать оба из 1 файла jar, поэтому мне не нужно запускать каждый раз оба клиента.jar и монитор.jar?

4 ответа

  1. Создайте другой проект и включите эти два файла jar в путь к третьему классу.

    Теперь вы можете скопировать тот же код из mainметодов из jar A и Jar B и вставить, что в mainметод jar C. Теперь вы можете запустить только Jar C.

  2. Но есть ли способ объединить их файлы jar, чтобы я мог запускать оба из 1
    сосуд

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

    Необходимо соблюдать осторожность при объединении Манифеста.MF-файл, который определяет точку входа главного класса, имеющего метод main.

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

  3. Im с помощью netbeans для java.
    Самый простой способ, который вы хотите, это создать новый проект и добавить 2 файла jar в качестве библиотеки в проект

  4. Можно объединить эти два файла jar в один файл jar, однако каждый файл jar может иметь только один основной класс, который запускается, если никакой основной класс не указан через командную строку.

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

    Тем не менее, я бы не рекомендовал объединять эти два. Есть причина, по которой эти два отдельных проекта, так почему бы вам объединить их обоих? Кроме того, если один файл jar аварийно завершает работу, второй по-прежнему будет работать.

    Если вы все еще хотите объединить эти два я вижу два варианта:

    • Либо вы создаете третий проект (я предполагаю maven?) который зависит от обоих проектов и содержит новый основной класс
    • Или, если вы столкнулись с проблемами загрузки класса, так как первый подход будет помещать банки в файл jar, вы можете использовать плагин Maven shade для получения одного плоского файла jar. Это иногда необходимо, если вы используете сторонние библиотеки, где вы не можете контролировать, как загружаются ресурсы.