java 解析 manifest_详解Manifest

java 解析 manifest_详解ManifestMANIFEST MF 打开 Java 的 JAR 文件我们经常可以看到文件中包含着一个 META INF 目录 这个目录下会有一些文件 其中必有一个 MANIFEST MF 这个文件描述了该 Jar 文件的很多信息 下面将详细介绍 MANIFEST MF 文件的内容 先来看 struts jar 中包含的 MANIFEST MF 文件内容 Manifest Version 1 0Created By ApacheAn

MANIFEST.MF  打开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-digester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar struts-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-Name

3. -Specification-Version

4. -Implementation-Version

5. -Implementation-Vendor-Id

5. -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信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204847.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:23
下一篇 2026年3月19日 下午7:24


相关推荐

  • java中的参数传递(只有值传递没有引用传递)

    java中的参数传递(只有值传递没有引用传递)Java 中只有传值调用 值传递 没有传址调用 址传递或者引用传递 所以在 java 方法中改变参数的值是不会改变原变量的值的 但为什么改变引用变量的属性值却可以呢 请看下面的解答 java 中的数据类型 Java 中数据类型分为两大类 基本类型和引用类型 相应的 变量也分这两种类型 基本类型和引用类型 基本类型的变量保存原始值 即它代表的值就是数值本身 而引用类型的变量保存的值是引用值

    2026年3月20日
    2
  • 【AD】altium designer绘制原理图使用教程

    【AD】altium designer绘制原理图使用教程我是一名多年的硬软件工程师 下面的讲解你参考一下 万事从简单开始 我们来看看一个简单的放大电路 上面电路图 是一个三极管放大电路来的 2N3904 是三极管 它和外围器件 组成放大电路 让喇叭发出声音 那上面这个图 在 AD 里面是怎么画出来的呢 我们来看看 AD 软件的文件概念图 AD 的概念就是上面这个图 项目文件相当于一个总文件夹 它里面可以包含很多子文件 右边指针头那些 这样说的话 当打开 AD 软件的时候 首先要创建一个项目文件 然后才能在项目文件里面创建子文件 这个就是完整的文件

    2026年3月26日
    2
  • OpenClaw v2026.3.12 离线源码构建与 Docker 部署完整教程

    OpenClaw v2026.3.12 离线源码构建与 Docker 部署完整教程

    2026年3月14日
    1
  • 实时数据库简介和比较—PI

    实时数据库简介和比较—PI实时数据库是数据库系统发展的一个分支,它适用于处理不断更新的快速变化的数据及具有时间限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物,实时数据库系统的主要内容包括:实时数据库模型;

    2022年8月3日
    41
  • URAL 1180. Stone Game (博弈 + 规律)[通俗易懂]

    URAL 1180. Stone Game (博弈 + 规律)

    2022年1月24日
    52
  • 关于VUE双向绑定失效的问题「建议收藏」

    关于VUE双向绑定失效的问题「建议收藏」双向绑定失效的原因有很多。lz就说最近遇到的。是的,单价下的那个输入框我用了双向绑定(比如叫price,比如100)。然后ipnut键入中文时,(即使我做了输入验证)。回车时虽然框中不会保留中文,但事实上VUE的双向绑定已经失效了。不管你后面输入什么,绑定的price保存的值只会是中文前的那个值(100)。这样就导致表面好像没事,但是当你提交时就数据不对了。还有

    2025年11月15日
    6

发表回复

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

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