解决jar包中没有主清单目录的问题

文章目录

  • 解决jar包中没有主清单目录的问题
    • 问题描述
    • 环境描述
    • 方法一 | 阿里巴巴构造器的通用解决方案
    • 方式二 | 指定MANIFEST.MF路径

解决jar包中没有主清单目录的问题


问题描述

很简单可能很多人都遇到过,maven项目打成jar包后执行报错:jar包中没有主清单属性

报错如下:

D:\Dev\DevTools\jdk8\bin\java.exe -Dfile.encoding=GBK -jar D:\DevCodes\Gitlab\TempDemo\target\TempDemo-0.0.1-SNAPSHOT.jar
D:\DevCodes\Gitlab\TempDemo\target\TempDemo-0.0.1-SNAPSHOT.jar中没有主清单属性

截图如下:

在这里插入图片描述



环境描述

由于现在SpringBoot官方提供的Spring Initializr不提供2.x.x版本的SpringBoot,所以我将它替换成了阿里的构造器(替换方法见下图,URL:https://start.aliyun.com )。


这一步不是步骤,不需要模仿。

截图




方法一 | 阿里巴巴构造器的通用解决方案

无论是否使用阿里巴巴构造器创建的项目,都需要确认pom.xml文件中是包含下面代码,如果有的话请注释掉<skip>true</skip>这一行代码,随后打包测试。


若是采用我在上面介绍的阿里巴巴构造器的项目创建方式,则一定会遇到这个问题,且这种方式一定可以解决。

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.jim.tempdemo.TempDemoApplication</mainClass><!-- 需要注释掉的代码 --><!-- <skip>true</skip> --></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions>
</plugin>

注释掉之后重新打包即可。

注意:请勿修改build标签中的其它代码,可能会导致打包后依然没有主清单属性,如果修改请还原。

注意:使用阿里构造器创建的项目请勿删除dependencyManagement,这会一些依赖无法下载,需要手动指定版本或指定项目的父项目(parent)。




方式二 | 指定MANIFEST.MF路径

此方案适用于官方构造器创建的项目,若是采用阿里巴巴构造器创建的项目使用此方案解决的话,需要对POM进行改造,在文章末尾有介绍。

  1. 点击Project Structure
    在这里插入图片描述

  2. 按照下图依次创建一个Artifacts

在这里插入图片描述

在这里插入图片描述

请注意:上图第二个红框框中的路径一开始不是src下,需要修改一下。

做完上述步骤后,src文件夹下会出现一个META-INF文件夹,里面的文件中包含着启动类等信息。

在这里插入图片描述

到这里就可以再次尝试打包了(官方构造器创建的项目到这里应该已经解决了),如果还没有解决问题,请继续往下看。

  1. 如果还没有解决问题的话,请在你的pom.xml文件中添加maven插件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

添加后刷新Maven后重新打包测试。

正如上文所说,方式2并不适用于阿里巴巴构造器,如果是使用阿里巴巴构造器创建的项目想要使用方式2来解决的话,需要删除掉dependencyManagement标签,随后刷新Maven会提示几个依赖没有版本信息,这时候给这几个缺失版本的依赖都添加上依赖信息后重新打包即可,或者不用单独指定依赖版本,直接指定整个项目的父项目也可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/9089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘:深度学习与自然语言处理的本质差异

在人工智能的广阔天地中&#xff0c;深度学习与自然语言处理犹如两颗耀眼的明星&#xff0c;各自绽放着光芒。尽管它们时常在科技文章中齐头并进&#xff0c;但它们的核心区别与联系常常令人迷惑。如果你希望一次性搞懂这两个人工智能领域的差异和联系&#xff0c;那么本文将是…

2024OD机试卷-数组连续和 (java\python\c++)

题目:数组连续和 题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。 输入描述 第一行两个整数N x(0 < N <= 100000, 0 <= x <= 10000000) 第二行有N个正整数(每个正整数小于等于100)。 输出描述 输出一…

Spring Security 入门 2

1.项目实战 就以RuoYi-Vue 为例吧&#xff0c;主要以下几点原因&#xff1a; 基于 Spring Security 实现。 基于 RBAC 权限模型&#xff0c;并且支持动态的权限配置。 基于 Redis 服务&#xff0c;实现登录用户的信息缓存。 前后端分离。同时前端采用 Vue &#xff0c;相对来…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗&#xff1f;在快节奏的现代生活中&#xff0c;思维导图作为一种高效的信息组织和表达工具&#xff0c;越来越受到人们的青睐。随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;AI思维导图软件也应运而生&#xff0c;它们不仅能够帮助用户…

Qt | QValidator 抽象类(验证器)及其子类|QDoubleValidator 类|QIntValidator 类

01、上节回顾 Qt | QComboBox(组合框)Qt | QLineEdit 类(行编辑器)02、QValidator 1、QValidator 类直接继承自 QObject 类,且是一个抽象类,因此具体功能主要由其子类来实现,或者子类化该类实现自定义的验证器。 2、验证器的作用是验证用户输入的

Orange3数据可视化(小提琴图)

小提琴图 小提琴图和箱线图类似&#xff0c;用来显示数据分布和概率密度。结合了箱线图和密度图的特征&#xff0c;用来显示数据的分布形状。 输入 数据: 输入数据集 输出 选中的数据: 从图中选中的实例 数据: 增加了一列&#xff0c;显示数据点是否被选中 …

k8s DaemonSet

DaemonSet 是k8s节点上的守护进程。 ReplicaSet 和 DaemonSet 的区别&#xff1a; ReplicaSet 部署在不同节点上的 pod 是随机分布的。DaemonSet 部署在不同节点上的 pod 的数量是刚好一个的&#xff0c;因此DaemonSet 不需要期望数量。 DaemonSet 将 pod 部署到集群中的所有…

java随机生成6位验证码,首位不能是0

在Java中&#xff0c;要随机生成一个6位的验证码&#xff0c;其中首位不能为0&#xff0c;可以使用以下代码示例&#xff1a; import java.util.Random;public class VerificationCodeGenerator {public static void main(String[] args) {System.out.println(generateVerific…

three.js 效果细节提升

1. three.js 效果细节提升 加载模型时&#xff0c;给模型设置接受阴影&#xff0c;反射阴影 gltfLoader.load("./model/court-transformed.glb", (gltf) > {gltf.scene.traverse(child > {if (child.isMesh) {child.castShadow true; // 设置阴影可以投射阴…

【Linux】yum与vim

文章目录 软件包管理器&#xff1a;yumLinux安装和卸载软件包Linux中的编辑器&#xff1a;vimvim下的底行模式vim下的正常模式vim下的替换模式vim下的视图模式vim下的多线程 软件包管理器&#xff1a;yum yum其实就是一个软件,也可以叫商店 和你手机上的应用商店或app store一…

【C++】详解STL容器之一的deque和适配器stack,queue

目录 deque的概述 deque空间的结构 deque的迭代器 deque的数据设计 deque的优缺点 适配器的概念 ​编辑 stack的概述 stack的模拟实现 queue的概述 queue的模拟实现 deque的概述 deque的设计参考了另外两大容器vector和list。可参考下面两篇文章 详解vector&#x…

Unity DOTS1.0(9) Struct Change

Struct Change 概念&#xff1a; 一些引发了unity重新排列chunk内存,改变了chunk数据内容的一些操作&#xff0c;叫做structural changes。这个操作消耗很大&#xff0c;并且只能在主线程里面运行。所以了解清楚很重要。 导致Struct Change的操作&#xff1a; 1. 创建一个E…

Spring Boot 整合 socket 实现简单聊天

来看一下实现的界面效果 pom.xml的maven依赖 <!-- 引入 socket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- 引入 Fastjson &#x…

bert-NER 转化成 onnx 模型

保存模型 加载模型 from transformers import AutoTokenizer, AutoModel, AutoConfigNER_MODEL_PATH ./save_model ner_tokenizer AutoTokenizer.from_pretrained(NER_MODEL_PATH) ner_config AutoConfig.from_pretrained(NER_MODEL_PATH) ner_model AutoModelForTokenCl…

【雅思写作】Vince9120雅思小作文笔记——P1 Intro(前言)

文章目录 链接P1 Intro&#xff08;前言&#xff09;字数限制题型综述&#xff08;problem types overview&#xff09;1. **柱状图&#xff08;Bar Chart&#xff09;** - 描述不同类别在某个或多个变量上的数据量比较。2. **线图&#xff08;Line Graph&#xff09;** - 展示…

uboot ping不了

主机无线连接wifi&#xff0c;开发板有线连接主机&#xff0c;虚拟机需要开双网卡模式。一卡为桥接模式&#xff0c;负责连通开发板&#xff1b;一开为nf模式&#xff0c;负责联网。 部分网络芯片没有MAC地址&#xff0c;每次重启会随机生成一个MAC地址来使用&#xff0c;导致…

冯喜运:5.10黄金反弹受阻,原油EIA库存激增引发市场情绪

【黄金消息面分析】&#xff1a;据最新市场数据显示&#xff0c;现货黄金在周四欧市早盘经历了显著下滑&#xff0c;价格一度跌破2310美元/盎司的关口&#xff0c;日内高点回落达10美元&#xff0c;截至发稿&#xff0c;黄金小幅反弹&#xff0c;交投于2312美元/盎司附近。此番…

【工具】如何提取一个mp4文件的关键帧

文章目录 怎么做如何安装ffmepgUbuntu 或 DebianCentOS 或 FedoramacOSWindows其他 Linux 发行版 实践什么是关键帧 怎么做 你可以使用ffmpeg这个强大的多媒体处理工具来提取mp4文件中的关键帧。以下是一个示例命令&#xff0c;可以使用ffmpeg从mp4文件中提取关键帧&#xff1…

即将开幕,邀您共赴创新之旅“2024上海国际消费者科技及创新展览会”

备受期待的2024上海国际消费者科技及创新展览会&#xff08;以下简称“CTIS”&#xff09;即将于6月13日至15日亮相上海新国际博览中心N1-N3馆。 2024上海国际消费者科技及创新展览会总面积达40,000平方米&#xff0c;涵盖600余家展商&#xff0c;预计吸引40,000多位观众莅临现…

单片机——直流电机

1 .关于4线直流电机 两根12v供电线&#xff0c;通入12v&#xff0c;风扇以最高转速工作。 一根测速线&#xff0c;电机工作时输出测速信号&#xff0c;提供转速反馈。一根PWM控制信号线&#xff0c;电机工作时控制器输入PWM控制信号&#xff0c;以控制风扇转速(通常为占空比可…