xxx.jar或者xxx.war中没有主清单属性和spring-boot-maven-plugin的作用

因为springboot本身集成了tomcat插件,所以我们可以直接使用mvn clean package命令打成jar包或者war包,然后使java -jar xxx.jar 或者 java -jar xxx.war命令非常方便的去部署运行项目。

但是在执行命令时提示:

PS F:\wkh_code\my-blog\target> java -jar myblog.war
myblog.war中没有主清单属性
PS F:\wkh_code\my-blog\target>

这里引出一个问题:主清单属性是什么

当我们把springboot项目打成war包或者jar后,解压之后我们可以发现一个名为==META-INF==文件夹。其中META-INF文件夹下有一个名为MANIFEST.MF的文件,该文件指明了程序的入口以及版本信息等内容,内容如下

Manifest-Version: 1.0
Implementation-Title: my-blog
Implementation-Version: 1.0-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: hua
Implementation-Vendor-Id: com.wangkaihua
Spring-Boot-Version: 1.4.0.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.WarLauncher
Start-Class: com.wangkaihua.myblog.Application
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_144
Implementation-URL: http://projects.spring.io/spring-boot/my-blog/

其中有==Start-Class==:指明了程序的入口类、==Spring-Boot-Classes==:指明了类的路径,所有编译后的class文件还有==Spring-Boot-Lib==等等,这些都是springboot项目独立运行必须要知道的。所以应该是我们打包的姿势不对,我们缺少了一个打包插件:==spring-boot-maven-plugin==

这里引出第二个问题:spring-boot-maven-plugin作用

Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。

解决方法

在pom.xml中引入对spring-boot-maven-plugin插件的依赖

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

执行mvn clean package,将自动生成必要的主清单属性,运行java -jar xxx.jar或者java -jar xxx.war时会根据主清单属性找到启动类启动程序。

参考:

没有主清单属性

springboot maven插件详解

原文地址:https://www.cnblogs.com/wangkaihua/p/10165339.html

时间: 2024-11-08 08:24:08

xxx.jar或者xxx.war中没有主清单属性和spring-boot-maven-plugin的作用的相关文章

jar中没有主清单属性

在导出jar时指定主类位置 或手动配置jar包中的MANIFEST.MF文件: 添加Main-Class: gui 参考: JAVA环境变量 CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; PATH .;%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin JAVA_HOME C:\Program Files\Java\jdk1.8.0_101

idea jar 中没有主清单属性

idea 中maven需要有插件 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 原文地址:https://www.cnblogs.co

jar中没有主清单属性【解决办法】

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>

在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性

Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn package后生成了jar文件,然后直接到target目录下去执行Java -jar xxx.jar命令运行jar包时出现了“xxx.jar没有主清单属性”的错误提示. 根据我的经验,肯定是没有找到入口类(即main函数所在的类),在pom.xml里面加上入口类的配置就好了!第一次直接用maven来打包jar,记录一下. 关于可执行程序(需要指定一个 main 类)打 jar 包

(maven项目)使用java -jar命令遇到的小问题|xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar

xx.jar中没有主清单或Error:Invalid or corrupt jarfile xx.jar 遇到这个问题,是因为你的jar包没有设置主类的入口. 即在META-INF文件夹的MANIFEST.MF文件中没有定义Main-Class: packageName.className(此处Main-Class:与 packageName.className之间有一个空格并且一行结束后有换行符) 我们可以用winrar打开你导出jar包(不用解压),在META-INF文件夹中找到MANIFE

eclipse 导出jar 没有主清单属性的解决方法

eclipse编写导出的jar文件,运行出现了没有主清单属性,问题在哪里呢?有下面几种方法: 1. 导出jar文件的时候选择[可运行的jar文件]而不是[Jar文件]即可,如下图: 2. 在jar文件包的MAINFIEST.MF文件,添加一行[Main-Class: XXX],其中XXX为主类名,注意XXX之前有一个空格,否则出现压缩包错误: 3. 在eclipse工程目录下编辑MAINFIEST.MF文件,然后导出的时候选择导出jar文件的时候选择[从工作空间中使用现有清单]即可,如下图:

解决 SpringBoot 没有主清单属性

问题:SpringBoot打包成jar后运行提示没有主清单属性 解决:补全maven中的bulid信息 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.version}</version> <executions> &l

Spring Boot Maven 打包可执行Jar文件

本文转载自:http://blog.csdn.net/smilecall/article/details/56288972 Maven pom.xml 必须包含 <packaging>jar</packaging> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-mave

使用IDEA 中 实现springboot 热部署 (spring boot devtools版)

第一步:添加springboot的配置文件 首先我先贴出我的配置 添加依赖包 <!-- spring boot devtools 依赖包. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <