META-INF文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务。这个文件夹和其中的 MANIFEST.MF文件,在用jar打包时自动生成。

执行jar文件的时候,这个jar里是需要具备 META-INF/MANIFEST.MF的,否则java -jar就找不到main class。

初始结构:

Manifest-Version: 1.0

假设文件目录为folder/file.class,

压缩成 ZIP 文件 folder.zip,则这个 ZIP 文件的内部目录结构为:

folder.zip
`-- folder
`-- file.class

如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 folder.jar,则这个 JAR 文件的内部目录结构为:

folder.jar
`-- META-INF
`-- MANIFEST.MF
`-- folder
`-- file.class


如果需要打包可直接运行的jar包,需要在MANIFEST.MF添加内容

Manifest-Version: 1.0
Main-Class: addJarPkg #Main-Class为主类名称Class-Path: lib/java-mysql-connecter.jar #如果需要用到第三方jar包,需要在此注明,多个jar包之间用空格分隔,最后一个jar包后面加两个空格

一般手动打包时可以自己先写好一个类似文件,在使用jar命令打包时使用 -m 选项覆盖掉自动生成的MANIFEST.MF文件。

使用工具打包时可以直接选择。

附件:来自https://www.cnblogs.com/Gandy/p/7290069.html

MANIFEST.MF文件可能的内容整理:

Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path:  commons-beanutils.jar commons-collections.jar commons-dig
 ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
 truts-legacy.jar

如果我们把MANIFEST中的配置信息进行分类,可以归纳出下面几个大类:

一. 一般属性

1. Manifest-Version
 用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2. Created-By
 声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
3. Signature-Version
 定义jar文件的签名版本
4. Class-Path
 应用程序或者类装载器使用该值来构建内部的类搜索路径

二. 应用程序相关属性

1. Main-Class
 定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
 
三. 小程序(Applet)相关属性

1. Extendsion-List
 该属性指定了小程序需要的扩展信息列表,列表中的每个名字对应以下的属性
2. <extension>-Extension-Name
3. <extension>-Specification-Version
4. <extension>-Implementation-Version
5. <extension>-Implementation-Vendor-Id
5. <extension>-Implementation-URL

四. 扩展标识属性

1. Extension-Name
 该属性定义了jar文件的标识,例如Extension-Name: Struts Framework
 
五. 包扩展属性
 
1. Implementation-Title   定义了扩展实现的标题
2. Implementation-Version   定义扩展实现的版本
3. Implementation-Vendor   定义扩展实现的组织  
4. Implementation-Vendor-Id   定义扩展实现的组织的标识
5. Implementation-URL :   定义该扩展包的下载地址(URL)
6. Specification-Title   定义扩展规范的标题
7. Specification-Version   定义扩展规范的版本
8. Specification-Vendor   声明了维护该规范的组织
9. Sealed   定义jar文件是否封存,值可以是true或者false (这点我还不是很理解)

六. 签名相关属性

签名方面的属性我们可以来参照JavaMail所提供的mail.jar中的一段

Name: javax/mail/Address.class
Digest-Algorithms: SHA MD5 
SHA-Digest: AjR7RqnN//cdYGouxbd06mSVfI4=
MD5-Digest: ZnTIQ2aQAtSNIOWXI1pQpw==

这段内容定义类签名的类名、计算摘要的算法名以及对应的摘要内容(使用BASE方法进行编码)

七.自定义属性

除了前面提到的一些属性外,你也可以在MANIFEST.MF中增加自己的属性以及响应的值,例如J2ME程序jar包中就可能包含着如下信息

MicroEdition-Configuration: CLDC-1.0
MIDlet-Name: J2ME_MOBBER Midlet Suite
MIDlet-Info-URL: http://www.javayou.com
MIDlet-Icon: /icon.png
MIDlet-Vendor: Midlet Suite Vendor
MIDlet-1: mobber,/icon.png,mobber
MIDlet-Version: 1.0.0
MicroEdition-Profile: MIDP-1.0
MIDlet-Description: Communicator

转载于:https://www.cnblogs.com/jayworld/p/9767228.html

META-INF/MANIFEST.MF介绍相关推荐

  1. META-INF/MANIFEST.MF介绍 _

    原文地址:https://www.cnblogs.com/jayworld/p/9767228.html META-INF文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用 ...

  2. IDEA打jar包时出现manifest.mf already exists in vfs解决办法

    1.什么是MANIFEST.MF 下面MANIFEST.MF的介绍来自百度百科http://baike.baidu.com/link?url=QQ97CnYdkb0RqF33qFh9XiRfF_2NG ...

  3. MANIFEST.MF的用途(转载)

    可以用的上的有: 1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序. 2. Class-Path 指定jar包的依赖关系,class loader ...

  4. 【Java】MANIFEST.MF是什么

    1.概述 常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了:而另一种是使用 JE ...

  5. jav中jar包的MANIFEST.MF

    打开Java的JAR文件我们经常可以看到文件中包含着一个METAR-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANI ...

  6. MANIFEST.MF的用途

    可以用的上的有: 1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序. 2. Class-Path 指定jar包的依赖关系,class loader ...

  7. JAR包中的MANIFEST.MF文件详解以及编写规范

    JAR包中的MANIFEST.MF文件详解以及编写规范 参考百度百科的解释如下: http://baike.baidu.com/item/MANIFEST.MF MANIFEST.MF:这个 mani ...

  8. MANIFEST.MF文件详解

    文章目录 一. 一般属性 二. 应用程序相关属性 三. 小程序(Applet)相关属性 四. 扩展标识属性 五. 包扩展属性 六. 签名相关属性 七.自定义属性 JAR 文件是什么? META-INF ...

  9. manifest java_JAR包中的MANIFEST.MF文件详解以及编写规范

    参考百度百科的解释如下: MANIFEST.MF:这个 manifest 文件定义了与扩展和包相关的数据.单词"manifest"的意思是"显示" 打开Java ...

最新文章

  1. python画层次结构图_Maptree-层级结构数据展示的绝佳尝试
  2. (深度卷积生成对抗神经网络)DCGANs论文阅读与实现pytorch
  3. 4.6 大数据集-机器学习笔记-斯坦福吴恩达教授
  4. 北京市将持续扩大5G网络建设规模 超前布局6G
  5. 情怀无价!诺基亚225 4G正式开售:320元
  6. 好文!2020届最新互联网校招薪资大全!
  7. 现在,AI 已经能预测病人什么时候死亡了,准确率达 90%
  8. 系统设计---分层,分级,分块
  9. android 手机关机代码非root,Android手机获取root权限并实现关机重启功能的方法
  10. 移动通信原理B-------课后作业1
  11. ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)
  12. 大学计算机应用基础教学设计,大学计算机应用基础电子教案设计.doc
  13. dede后台登陆提示 验证码不正确 解决办法(新版)
  14. webgame《天龙诀》完整网页游戏源码
  15. 利用FME创建CAD标准图层模板
  16. [RK3288][Android6.0] 调试笔记 --- Audio的Voice Call无法静音问题
  17. POSCMS 域名绑定
  18. 配置ssh使用socks代理
  19. 程序员面试金典-刷题笔记
  20. 关于html5外文翻译三千字,推荐5个功能强大的外文文献学术论文翻译工具

热门文章

  1. Fuchsia OS 现已支持第二代 Nest Hub
  2. qq空间、微信好友、邮件、短信分享
  3. matlab图像边缘宽度调整
  4. Google Earth更新北京奥运场馆卫星地图
  5. SpringBoot项目修改JDK后报错(class file version 55.0)
  6. docker容器打包成镜像并上传至dockerhub
  7. android手机网速,安卓手机网速慢怎么办 安卓手机网速慢解决办法【详解】
  8. 51单片机课设——模拟电梯控制系统
  9. 跳板机配置,镜像创建,网站云平台部署
  10. 用OpenVINO工具包轻松实现PaddleOCR实时推理