Создание 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 - > модули - > путь

enter image description here


под File / Project structure / Artifacts вы можете указать, как ваш jar должен быть построен. Можно выбрать либо использовать существующий файл в качестве манифеста, либо создать новый, в этом случае можно указать основной класс и путь к классу...


Я нашел другое решение для опубликованных. В диалоговом окне структура проекта IntelliJ используется для построения содержимого .файл jar, мне пришлось вручную добавить папку META-INF, содержащую файл манифеста. Вот как это выглядит в конце в диалоговом окне структура проекта. Если вы не видите папку в списке содержимого jar, файл манифеста не является частью файла jar.

This is part of the Project Structure Dialog box

способ включения папки вручную чтобы щелкнуть знак "плюс", выберите параметр содержимое каталога и перейдите в папку META-INF.