jar中没有主清单属性啥意思啊_eclipse 找不到或无法加载主类

jar中没有主清单属性啥意思啊_eclipse 找不到或无法加载主类今天新写的SpringBoot项目打jar包部署的时候遇到一个问题,xxx.jar包中没有主清单属性。如下图所示:主清单属性是jar包中MANIFEST.MF文件中的一个属性,MANIFEST.MF文件位于jar包的META_INF路径下打开MANIFEST.MF文件,里面有如下属性:Manifest-Version:1.0Implementation-Title:com.imoocImple…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天新写的SpringBoot项目打jar包部署的时候遇到一个问题,xxx.jar包中没有主清单属性。如下图所示:

4d5f3d1221bb63b0f38c63ba56983f84.png

主清单属性是jar包中MANIFEST.MF文件中的一个属性,MANIFEST.MF文件位于jar包的META_INF路径下

5c2e1daddf968420dc5ca587a86ac0b0.png

打开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.net/197190.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月12日 上午10:15
下一篇 2025年9月12日 上午10:43


相关推荐

  • 华为招聘机试整理14:数组奇数偶数排序「建议收藏」

    华为招聘机试整理14:数组奇数偶数排序

    2022年1月20日
    44
  • 渗透测试工具之:BurpSuite「建议收藏」

    渗透测试工具之:BurpSuite「建议收藏」BurpSuiteBurpSuite能高效率地与多个工具一起工作,例如:一个中心站点地图是用于汇总收集到的目标应用程序信息,并通过确定的范围来指导单个程序工作。在一个工具处理HTTP请求和响应时,它可以选择调用其他任意的Burp工具。例如:代理记录的请求可被Intruder用来构造一个自定义的自动攻击的准则,也可被Repeater用来手动攻击,也可被Scanner用来分析漏洞,或者被Spider(网络爬虫)用来自动搜索内容。应用程序可以是“被动地”运行,而不是产生大量的自动请求。Burp

    2022年5月28日
    31
  • SLAM技术课程总结「建议收藏」

    SLAM技术课程总结「建议收藏」这学期SLAM技术课程遇到最多的问题,或者说困难更合适,其实和学生无关。专业培养方案中,SLAM技术是双语课程,但此课对数学要求极高,通常应用型本科院校学生的数学基础并不具备直接学习此课程的条件; 操作环境要求学生需在Linux系统下完成,虽然现在有云端实践平台,但掌握基本的Linux命令依然是必不可少的基础,对于机器人工程专业学生而言,课程体系忽略了这块训练,使此课孤立于课程体系中,无法和现有培养方案的其他课程形成良性互动; 编程要求C++11,当然能够掌握14以上更好,而之前的课程多侧重于C和

    2022年10月1日
    5
  • linux安装oracle19c完整版(图形+静默安装)

    linux安装oracle19c完整版(图形+静默安装)最近有项目要搭建测试环境,加上又刚参加了oracle组织的oracle19c的升级培训,所以准备在测试环境里面直接安装oracle19c。

    2022年7月19日
    17
  • 邓白氏编码申请条件_苹果邓白氏码申请教程

    邓白氏编码申请条件_苹果邓白氏码申请教程一、填写申请表单申请苹果开发者账号途中,我们会用到邓白氏编码,申请邓白氏编码的入口自然也是在申请苹果开发者账号途中进入。1.登录AppID登录入口:https://developer.apple.com/account/.公司开发者账号一般都是由老板来管理的,所以使用老板的个人AppID登录就好了,没有就让老板申请一个。登录进来后进行以下操作:选择Company/Origani

    2025年5月31日
    4
  • 命令提示符窗口中的快捷键及其使用说明

    命令提示符窗口中的快捷键及其使用说明命令提示符窗口中的快捷键及其使用说明首先点击 开始 运行 输入 cmd F1 按 F1 一次 命令提示符向后切换到已经执行过的命令字符 如果已经是最后的一条的命令 则不进行任何切换操作 例子 之前输入 dir 按 F1 一次后自动输入 d 按两次自动输入 i 三次自动输入 r F2 按下此键后 会提示 输入可复制的字符数量 此时直接按下上次输入命令中包含的字

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号