jar中没有主清单属性啥意思啊_eclipse 找不到或无法加载主类
大家好,又见面了,我是你们的朋友全栈君。
今天新写的SpringBoot项目打jar包部署的时候遇到一个问题,xxx.jar包中没有主清单属性。如下图所示:
主清单属性是jar包中MANIFEST.MF文件中的一个属性,MANIFEST.MF文件位于jar包的META_INF路径下
打开MANIFEST.MF文件,里面有如下属性:
Manifest-Version: 1.0Implementation-Title: com.imooc
Implementation-Version: 1.0-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: liu
Implementation-Vendor-Id: com.zh
Created-By: Apache Maven 3.6.3Build-Jdk: 1.8.0_111
Implementation-URL: http://www.example.com
Implementation-Vendor: Pivotal Software, Inc.
再贴一个正常的MANIFEST.MF:
Manifest-Version: 1.0Implementation-Title: common
Implementation-Version: 0.0.1-SNAPSHOT
Spring-Boot-Version: 2.1.5.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.zh.common.management.CommonApplication
Spring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Build-Jdk-Spec: 1.8Created-By: Maven Archiver 3.4.0
对比发现有问题的jar包文件中多了Archiver-Version、Built-By、Implementation-Vendor-Id三个属性,少了Spring-Boot-Version、Main-Class、Start-Class、Spring-Boot-Classes、Spring-Boot-Lib五个Springboot相关的属性。
Main-Class:属性值代表了Spring Boot中启动jar包的程序,值为 org.springframework.boot.loader.JarLauncher,这个就是Springboot启动项目的类
Start-Class:属性值代表了Spring Boot程序的入口类,即XXXApplication类
Spring-Boot-Classes:属性值代表了类路径,所有编译后的class文件,以及配置文件,都存储在该路径下
Spring-Boot-Lib:属性值代表了表示依赖的jar包存储的位置
以上这些属性是Springboot打包插件默认生成,缺少这些属性项目无法运行。
所以需要再pom文件中添加Springboot打包插件:
org.springframework.boot
spring-boot-maven-plugin
按照一个正统的教程到这里应该就结束了,但是….
一顿操作之后你的项目可能会OK了,但也可能仍然有问题
我项目的POM文件是自动生成的在build标签里面附带了一个pluginManagement标签,我们知道pluginManagement一般是在父pom中,pluginManagement中包裹的插件,子pom可以直接引用,但也必须在子pom中写出来。当我百思不得其解的时候 ,我比较了我之前项目的pom文件,发现没有这个标签,然后我尝试删除pluginManagement标签之后。再次编译的jar包终于运行成功。这里pluginManagement的某种我不知道的特性可能对Springboot打包插件的生效产生了某种不可名状的干扰。
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-compiler-plugin
8
8
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197190.html原文链接:https://javaforall.cn
相关文章
- 【MYSQL】如何下载mysql驱动jar包
- 记录服务器被入侵病毒:ssh密码被更改登录失败、恶意程序跑满了cpu、jar包启动失败自动kill、一直弹出You have new mail in /var/spool/mail/root
- 如何将一个文件打成jar包
- java -jar 中没有主清单属性_idea中jar包已经导入但是还是报错
- windows 运行jar包 生成日志_jar包双击运行
- attempted to return null from_unable to process jar entry
- Linux中jar包启动和jar包后台运行的实现方式
- 依赖掌握 Linux 系统查看Jar包依赖的方法(linux查看jar包)
- spring boot项目:java -jar命令 没有主清单属性详解编程语言
- Maven导入本地jar包
- 文件Linux下快速启动Jar文件的技巧(linux怎么启动jar)
- 里找寻MySQL Jar包的探索之路(mysql的jar包在哪)
- Linux下快速运行Jar程序的方法(linux运行jar程序)
- 应用停止Linux下Jar应用的方法(linux停止jar)
- 标题:如何在Linux上运行Jar文件(linux运行jar文件)
- MySQL驱动JAR包:让数据访问更加方便(mysql驱动jar)
- Linux平台下的JAR文件打包指南(linuxjar打包)
- Linux下打包Jar的步骤指南(linux打包jar)
- 里获取获取MySQL JAR:一步一步引导(mysqljar在哪)
- Linux下加载Jar文件的步骤(linux加载jar文件)
- Linux环境下如何导入Jar文件(linux导入jar文件)
- 打包Linux:使用Jar轻松实现!(jar打包Linux)
- 解决Java程序MySQL驱动问题,下载MySQL JAR包.(mysql驱动jar包)
- 快速搭建MySQL数据库:Jar包驱动方案(mysql数据库驱动jar包)
- Linux下解压Jar文件的方法(linux解压jar文件)
- Linux解压JAR文件:一步一步操作指南(jar解压linux)
- 包一键安装:在Linux下运行Jar包(linux下运行jar)
- MySQL的Jar包使用方法(mysql中jar包)
- MySQL下载jar包简介和操作指南(mysql下载jar包)