无法执行 jar- 文件:“没有主清单属性” 问题处理
2021/8/23 8:28:24
本文主要是介绍无法执行 jar- 文件:“没有主清单属性” 问题处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
无法执行 jar- 文件:“没有主清单属性” 问题处理
场景
今天业余时间写好 java 脚本 进行 etl 业务数据清洗, 打 jar 包上传至服务器使用命令 java -jar etlMemberTag.jar
执行时报错:
can’t execute jar- file: “no main manifest attribute”
无法执行 jar- 文件:“没有主清单属性”
为了解决该问题,我查阅网络资料。并把问题解决方法整理如下
META-INF/MANIFEST.MF
要使 jar 包可执行, 你需要为 jar 创建一个名为 META-INF/MANIFEST.MF
的文件
META-INF/MANIFEST.MF
的作用在于, 它是存在于 jar 包文件中一个清单文件, 关于 JAR包 的相关描述信息、启动时的配置信息和安全性信息等均保存在其中,可以理解为 jar 的一个配置文件
META-INF/MANIFEST.MF
的基础属性:
- Manifest-Version: 定义
manifest
的文件版本,如:Manifest-Version: 0.1
- Created-By: 文件的生成者,该属性一般由
jar命令行工具
生成,例如:Created-By: Apache Ant 1.8.2 - Signature-Version: 签名版本
- Class-Path: 依赖项列表,若存在多个依赖项时则采用空格分隔。依赖项路径为以JAR包路径为参考系的相对路径。
回到问题
配置 文件
我们需要配置 META-INF/MANIFEST.MF
文件, 但文件本身应该有(至少)这一行:
Main-Class: com.mypackage.MyClass
com.mypackage.MyClass
位置就是你需要执行的类 public static void main(String[] args) 入口点的类的位置。
配置完成过后, 可以重新打包于 CLI 使用以下命令将执行:
jar cmvf META-INF/MANIFEST.MF .jar
maven pom.xml
对于Maven,还可以使用以下代码内容
解决问题。注意,这里只是主类声明,并不是完整的pom.xml:
此插件的最新文档:请参阅https://maven.apache.org/plugins/maven-jar-plugin/
<build> <plugins> <plugin> <!-- Build an executable JAR --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.mypackage.MyClass</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
这篇关于无法执行 jar- 文件:“没有主清单属性” 问题处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南