Как создать 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