我成功地使用 mvn clean package
命令构建了我的Spring MVC项目,遵循了这个教程。
现在我正在尝试使用以下命令运行该服务:
mvn clean package && java -jar target/gs-serving-web-content-0.1.0.jar
但是我遇到了这个错误:
无法从target/gs-serving-web-content-0.1.0.jar加载Main-Class清单属性
我错过了什么吗?
我成功地使用 mvn clean package
命令构建了我的Spring MVC项目,遵循了这个教程。
现在我正在尝试使用以下命令运行该服务:
mvn clean package && java -jar target/gs-serving-web-content-0.1.0.jar
但是我遇到了这个错误:
无法从target/gs-serving-web-content-0.1.0.jar加载Main-Class清单属性
我错过了什么吗?
<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>
mvn package
并不能让我成功。我必须使用mvn package spring-boot:repackage
,这样才能创建出独立的应用程序。 - twobeersmvn package spring-boot:repackage
解决了我的问题。感谢您提供的上述文档。 - mainframer你可能缺少Spring Boot Maven插件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
检查顺序
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
应该在dockerfile-maven-plugin之前执行,否则会重新打包。
这解决了我的manifest中没有主属性的问题。
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>
maven-jar-plugin
,需要添加 manifest
标签。java -jar target/gs-serving-web-content-0.1.0.jar
命令假定提供的 jar 文件是 可执行 的。在一个 可执行 的 jar 文件中,main
方法被定义在 MANIFEST.MF
文件中。鉴于您没有 MANIFEST.MF
文件,可以传递额外的命令行参数来指定包含 main
方法的类。
像 java -cp target/gs-serving-web-content-0.1.0.jar com.pkg.subpkg.MainClass
这样的命令就可以达到目的。
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/
****以上清单是使用“spring-boot-maven-plugin”由“Mradul Pandey”(于2015年9月2日4:50回答)创建的。
希望这可以帮助你
你需要在 MANIFEST.MF 文件中设置你的主类:
Main-Class: com.example.MainClassApplication
我已经使用了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>
一切就绪,可以开始了!
你可以使用
mvn package spring-boot:repackage
在 target 目录之前输入该命令,然后使用 jar 文件。
.