Не удалось загрузить атрибут манифеста Main-Class во время запуска java -jar
Я успешно построил проект Spring MVC с mvn clean package
, выполнив этот учебник.
Теперь я пытаюсь запустить службу с помощью:
mvn clean package && java -jar target/gs-serving-web-content-0.1.0.jar
Но я получаю эту ошибку:
Не удалось загрузить атрибут манифеста Main-Class из
целевой/GS-Порция-веб-контент 0.1.0.jar
Я что-то пропустил?
Ответы
Ответ 1
Если вы работаете с Spring Boot, это решит вашу проблему:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.2.5.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Справочное руководство | Spring Boot Maven Плагин
Ответ 2
Возможно, вам не хватает Spring плагина Boot Maven.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
Ответ 3
Вы должны указать его в своем pom.xml - это сделает ваш jar исполняемым со всеми зависимостями (замените your.main.class
):
<!-- setup jar manifest to executable with dependencies -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.main.class</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Ответ 4
Вам не хватает maven-jar-plugin
, в котором вам нужно добавить тег manifest
.
Ответ 5
Для весенней загрузки я создал файл MANIFEST.MF в папке META-INF.
в моей STS IDE я поместил папку META-INFO в папку src/main/resources следующим образом:
![screenshot from STS IDE (eclipse project)]()
содержимое файла MANIFEST.MF:
Manifest-Version: 1.0
Implementation-Title: bankim
Implementation-Version: 1.5.6.RELEASE
Archiver-Version: Plexus Archiver
Built-By: Yourname
Implementation-Vendor-Id: com.bankim
Spring-Boot-Version: 1.5.6.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.bankim.BankimApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: http://projects.spring.io/spring-boot/bankim/
- Каждое упоминание о "bankim"/"Bankim" относится к названию моего проекта, поэтому замените его на название вашего проекта, которое
- обратите особое внимание на значение "Start-Class". он должен содержать "путь" к классу, в котором есть ваш метод main.
- строка: Main-Class: org.springframework.boot.loader.JarLaunchers следует оставить как есть.
**** вышеупомянутый манифест был создан для меня с помощью "spring-boot-maven-plugin", упомянутого выше "Mradul Pandey" (ответ 2 сентября 15 в 4:50)
Надеюсь это поможет
Ответ 6
проверить порядок
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
это должно быть выше
dockerfile-maven-plugin, иначе произойдет переупаковка
это решило мою проблему отсутствия основного атрибута в манифесте.
Ответ 7
При экспорте проекта вы забыли создать файл манифеста
Ответ 8
У меня был spring-boot-maven-plugin
но все равно я получал сообщение об ошибке в отношении основного класса.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
Наконец мне пришлось использовать maven-jar-plugin
и добавить mainClass
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.org.proj.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
И это было хорошо идти!