Создание Jar с Intellij 2016 - нет главного атрибута манифеста
Я no main manifest attribute
при запуске jar создается Intellij. Я вытащил банку и заметил, что там было другое файл манифеста, а не тот, который я указала при создании артефакта.
когда я открываю манифест в IDE, он отображает все правильно, но после создания jar я получаю совершенно новый файл манифеста.
Manifest-Version: 1.0
Main-Class: YoutubeList
Я пробовал каждое решение из других ответов и все еще не получал его правильно. Почему создание простой банки-это адская задача в Intellij, он должен был помочь разработчикам!
редактировать
и иногда это не включает .файлы классов в Jar, что приводит к could not found or load class
5 ответов
я столкнулся с той же проблемой с Maven build. При создании артефакта из параметров структуры проекта (ctrl+alt+shift+S) необходимо изменить каталог манифеста:
<project folder>\src\main\java
измените java на resources
<project folder>\src\main\resources
Я также использовал опцию extract для целевой банки, и она работает хорошо.
редактировать
вы можете найти подробный шаг за шагом, другие решения здесь: https://stackoverflow.com/a/45303637/2640826
убедитесь, что ваш pom.xml имеет основной класс, на который ссылаются и полностью квалифицированный, подобный:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>org.mypkg.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
(... конечно, номер версии плагина может отличаться).
основной класс не полностью квалифицирован, это то, что заставляет людей предлагать переместить манифест в другое место (чтобы удовлетворить ссылку локально).
Я потратил несколько дней, чтобы решить ее. Мое решение: я загрузил проект, который присутствует в ответ. Затем я сравнил и исправил настройки загруженного проекта и моего собственного проекта. Я сравнил / исправил:
- Конфигурации Запуска / Отладки
- манифест.MF
- в настройках структуры Progect: проект, модули (отметьте, что источники, ресурсы и т. д.), артефакты.
в конце концов, я разместил META-INF в ресурсах справочник.
может быть, я сделал лишние действия, но это сработало для меня:)
P.S. Также необходимо выбрать "наследовать выходной путь компиляции проекта" в настройках структуры Progect - > модули - > путь
под File
/ Project structure
/ Artifacts
вы можете указать, как ваш jar должен быть построен. Можно выбрать либо использовать существующий файл в качестве манифеста, либо создать новый, в этом случае можно указать основной класс и путь к классу...
Я нашел другое решение для опубликованных. В диалоговом окне структура проекта IntelliJ используется для построения содержимого .файл jar, мне пришлось вручную добавить папку META-INF, содержащую файл манифеста. Вот как это выглядит в конце в диалоговом окне структура проекта. Если вы не видите папку в списке содержимого jar, файл манифеста не является частью файла jar.
способ включения папки вручную чтобы щелкнуть знак "плюс", выберите параметр содержимое каталога и перейдите в папку META-INF.