JAR包中MANIFEST.MF 文件内容详解

2023-05-16

打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的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==

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

七.自定义属性

除了前面提到的一些属性外,你也可以在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

关键在于我们怎么来读取这些信息呢?其实很简单,JDK给我们提供了用于处理这些信息的API,详细的信息请见java.util.jar包中,我们可以通过给JarFile传递一个jar文件的路径,然后调用JarFile的getManifest方法来获取Manifest信息。

更详细关于JAR文件的规范请见
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html

中文说明
http://www-900.ibm.com/developerWorks/cn/java/j-jar/

转载,来源已不详

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAR包中MANIFEST.MF 文件内容详解 的相关文章

随机推荐

  • ubuntu 通过 apt-get 安装软件失败时的解决方案

    最近在 vmware上的ubuntu系统下安装 软件时出现安装失败情况 xff0c 在网上搜了一通 xff0c 终于找到了解决方案 遇到的问题和解决方案如下 xff1a 一 apt get install vim二 apt get upda
  • Spring注解处理机制

    前言 众所周知 xff0c spring 从 2 5 版本以后开始支持使用注解代替繁琐的 xml 配置 xff0c 到了 springboot 更是全面拥抱了注解式配置 平时在使用的时候 xff0c 点开一些常见的等注解 xff0c 会发现
  • 解决SpringBoot使用时类找不到问题

    解决方案 第一步 xff1a 勾选这个选项 第二步 xff0c 在pom xml中添加以下代码 lt resources gt lt resource gt lt directory gt src main resources lt dir
  • java设计模式之建造者模式(Builder Pattern)

    目的 xff1a 将产品与产品的创建过程解耦 他是按照相应的步骤来构建产品 下面看一下UML序列图 对于序列图的一个解释 下面来上一个标准代码 Product java package com pxx public class Produc
  • 如何在 Github Pages 搭建库(创建免费域名)来管理和浏览自己的项目

    看了 这篇文章 你能学会 两大技能 如何在 Github Pages 上搭建库来管理自己的项目你能访问你的项目 就像访问域名一样 查看自己做的网页 说明 像我们学前端的朋友 xff0c 好不容易做好一个很炫的网页 xff0c 没法放在网站上
  • vim 快捷键修改

    ubuntu默认的vim确实不好用 xff0c 但它最强大的地方在于可修改的配置文件 xff0c 以及专门为vim所开发的vimscript脚本语言 后者暂时不用学习 xff0c 先来研究一下配置文件 vimrc 是控制 vim 行为的配置
  • Excel合并计算和分类汇总

    一 实现合并计算 合并计算主要实现将几个分开的表格按照需求的函数功能计算到一个表中 xff1a 1 分类合并 将下面三个城市的销售额分类合并到一个表当中 xff08 这里的销售额必须指明地区 xff0c 不然合并计算时会统计求和 xff09
  • 使用连接池方式和多线程方式连接mysql的测试说明

    前面文章讨论了mysql做高可用的配置 xff0c 参考文章链接 xff0c 而本文则是开发项目过程需要用的部分 xff0c 从配置数据库到实用数据库 xff0c 以及再用SQL做BI分析再到SQL优化 xff0c 这些都是全栈工程师的基本
  • Python中的图形绘制-Matplotlib简单动画制作

    Matplotlib 是一个非常广泛的库 xff0c 它也支持图形动画 动画工具以 matplotlib animation 基类为中心 xff0c 它提供了一个框架 xff0c 围绕该框架构建动画功能 主要接口有TimedAnimatio
  • 明面上是个歌手!暗地里是个程序员的明星你只知道许嵩和潘玮柏?

    在5月9日 xff0c 知名演员刘涛在社交平台发文公布 xff1a 已正式入职聚划算成官方优选官了 xff0c 而且还有花名叫刘一刀 xff0c 以后就专职给大家挑好物了 当然 xff0c 刘涛在5 14号已经开始上班了 xff0c 还邀请
  • 教你搭建FTP文件共享服务器

    一 什么是FTP FTP 文件传输协议 xff08 File Transfer Protocol xff0c FTP xff09 是用于在网络上进行文件传输的一套标准协议 xff0c 它工作在 OSI 模型的第七层 xff0c TCP 模型
  • 田忌赛马 - 去哪儿2018校招哈尔滨在线笔试题 - 开发工程师

    时间限制 xff1a C C 43 43 语言 1000MS xff1b 其他语言 3000MS 内存限制 xff1a C C 43 43 语言 65536KB xff1b 其他语言 589824KB 题目描述 xff1a 田忌和齐王赛马
  • Python的多线程爬虫详解

    多线程使用流程 Python 提供了两个支持多线程的模块 xff0c 分别是 thread 和 threading 其中 thread 模块偏底层 xff0c 它相比于 threading 模块功能有限 xff0c 因此推荐大家使用 thr
  • 基于python实现深度优先遍历搜索(DFS)

    1 1 算法介绍 1 2 实验代码 1 3 实验结果 1 4 实验总结 1 1 算法介绍 深度优先搜索算法 xff08 Depth First Search xff0c DFS xff09 是一种用于遍历或搜索树或图的算法 沿着树的深度遍历
  • ubuntu 20.04 不能鼠标双击打开 .desktop (桌面快捷方式图标)文件(双击变为使用文本编辑器打开)的解决办法

    经测试ubuntu 18 04 可以双击打开 desktop文件 然而ubuntu 20 04中 xff0c 在文件管理中 双击 desktop文件 变为了 使用文本编辑器打开 xff0c 而不是打开 desktop对应的应用程序 有一个桌
  • python怎么查看变量类型

    python怎么查看变量类型 Python判断变量的数据类型的两种方法 Python中的数据类型有数字 字符串 xff0c 列表 元组 字典 集合等 有两种方法判断一个变量的数据类型 1 isinstance 变量名 xff0c 类型 2
  • zabbix监控

    监控服务概述 1 实时查看服务状态 2 可以发送报警信息 xff08 邮件报警 短信报警 电话报警 微信报警 值班 xff08 大屏幕 xff09 报警 xff09 3 可以进行数据分析 xff08 潜在风险 对业务部门给出数据建议 xff
  • LINGO使用指南(转载)

    LINGO是用来求解线性和非线性优化问题的简易工具 LINGO内置了一种建立最优化模型的语言 xff0c 可以简便地表达大规模问题 xff0c 利用LINGO高效的求解器可快速求解并分析结果 1 LINGO快速入门 当你在windows下开
  • 星际译王stardict - 跨平台的国际词典软件

    平台 xff1a LInux Windows Mac 是否免费 xff1a 是 是否免安装 xff1a 否 是否开源 xff1a 是 语言 xff1a 多国语言 xff08 包括简体中文 xff09 软件主体程序大小 xff1a 13MB
  • JAR包中MANIFEST.MF 文件内容详解

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