Как создать runnable JAR в IntelliJ, как и в Eclipse

Мой процесс создания runnable JAR из проекта со многими библиотеками с Eclipse был.

Экспорт > Runnable JAR > Выберите конфигурацию запускa > Необходимые библиотеки пакетов в сгенерированный JAR > Готово

Это создает один JAR в моем пункте экспорта, который я FTP для моего сервера и выполняю нормально.

Недавно я переключился на IntelliJ по разным причинам, и это было улучшение во всех случаях, за исключением создания моих JAR, которые заставляют меня временно вернуться к затмению.

С IntelliJ I:

Открыть структуру проектa > Артефакты и создать новый JAR из модулей с зависимостями. Затем у меня есть макет вывода с именем JAR, META-INF внутри него и всеми моими библиотеками с форматом Extracted <lib.jar/> (извините, я не могу загрузить скриншоты в этой VPN.)

Я создаю свой артефакт (который примерно на 15 Мбайт больше) и FTP его на мой сервер, попробуйте запустить его, и я получаю ошибку:

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

Как мне подражать, как я это делаю в Eclipse?

ИЗМЕНИТЬ

Созданные два JAR значительно отличаются:

Действительная банка, создаваемая Eclipse, выглядит так: Хорошая банка

В то время как недопустимый .JAR выглядит так: Bad jar

Ответ 1

Вы сталкиваетесь с двумя проблемами: один кажется крупным, а один - незначительным:

  • Майор: исключение подписи
  • Незначительный: размер банки на 15 МБ больше, чем банку, создаваемую затмением.

Решение обеих проблем заключается в том, как вы строите артефакт. Прежде всего, удалите все extracted *.jar, затем добавьте все банку из скобок доступных элементов, как показано на рисунке.

Скриншот зависимостей

Очевидно, что добавление только упакованных (сжатых) банок уменьшит размер. Но это также решает проблему подписи. Для более подробного объяснения, пожалуйста, ознакомьтесь с этой статьей . Я приведу только одну строку.

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

Кажется, что некоторые из зависимостей подписаны, и переупаковка испортила META-INF вашего проекта.

Ответ 2

вы можете попробовать использовать gradle script. eclipse сделает проект gradle. вы можете использовать этот файл сборки с любым ide. он имеет встроенную задачу jar.

Ответ 3

Вы пытаетесь выполнить следующие шаги:

1) Файл → Структура проекта → Настройки проекта → Артефакты → Яр → Из модулей с зависимостями

2) Установите флажок Включить в проект chackbox.

3) Щелчок правой кнопкой мыши по модулю → модуль сборки 'ModuleName'

Ответ 4

Если вы используете Maven, вам нужно поместить каталог META-INF в папку /main/resources вместо main/java.

Ссылка: Intellij - Николай Чашников

Затем вы можете выполнить runnable jar обычно с помощью java -jar filename.jar