你对MANIFEST.MF这个文件知道多少?

这篇具有很好参考价值的文章主要介绍了你对MANIFEST.MF这个文件知道多少?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言


我们在读源码过程中,经常看到每个jar包的METE-INF目录下有个MANIFEST.MF文件,这个文件到底是做什么的呢?

在计算机领域中,"manifest" 通常指的是一份清单或概要文件,用于描述一组文件或资源的内容和属性。在 Java 中,MANIFEST.MF 文件就是一种用于描述 JAR 文件中包含的类和资源的清单文件,其中包含了一些元数据信息和属性。

至于为什么要将清单文件命名为 "MANIFEST.MF",可能是因为这个文件最早是在早期的 UNIX 系统中使用的,而在 UNIX 中,".manifest" 是一种用于描述软件包或文件集合的文件名后缀。因此,Java 在设计 JAR 文件时可能也采用了这个后缀,以便于与 UNIX 系统中的相关工具和标准兼容。而 ".MF" 则是指该文件的格式是基于 Manifest 文件格式(MF,Manifest File Format)的,这也是 JAR 文件格式中的一部分。

MANIFEST.MF 概述


MANIFEST.MF 文件是 Java 打包工具(如 jar、war、ear 等)中必须存在的一个文件,用于描述打包文件的元信息。它的主要作用有以下两个方面:

  1. 指定打包文件中的主类

MANIFEST.MF 文件中的 Main-Class 属性可以指定打包文件中的主类,这个主类将会在运行时被启动。当我们使用 java -jar 命令运行一个 JAR 文件时,Java 运行时会读取 MANIFEST.MF 文件,找到 Main-Class 属性指定的类,并执行该类的 main() 方法。
  1. 存储打包文件的元信息

MANIFEST.MF 文件中还可以包含其他自定义属性,用于存储打包文件的元信息。例如,可以指定打包文件的版本号、作者、描述信息等。这些属性可以在运行时被读取,以提供更多的应用程序信息。

除了可以由打包工具自动生成 MANIFEST.MF 文件之外,我们也可以手动创建和编辑该文件,以添加自定义的属性。例如,我们可以使用文本编辑器创建一个名为 MANIFEST.MF 的文件,然后将以下内容保存到该文件中:

MANIFEST.MF有哪些配置项


  1. Manifest-Version
    指定 MANIFEST.MF 文件的版本号。例如
    Manifest-Version: 1.0

  1. Main-Class
    指定打包文件的主类。例如
    Main-Class: com.example.MyMainClass

  1. Class-Path
    指定该 JAR 文件的类路径,以便在运行时加载其他类。例如:
    Class-Path: lib/other.jar lib/some.jar

  1. Created-By
    指定生成该 JAR 文件的工具和版本号。例如:
    Created-By: Apache Maven 3.6.3

  1. Implementation-Title
    指定该 JAR 文件的实现标题。例如:
    Implementation-Title: My Application

  1. Implementation-Version
    指定该 JAR 文件的实现版本。例如
    Implementation-Version: 1.0.0-SNAPSHOT

  1. Implementation-Vendor
    指定该 JAR 文件的实现厂商。例如:
    Implementation-Vendor: Acme Corporation

  1. Implementation-Vendor-Id
    指定该 JAR 文件的实现厂商 ID。例如:
    Implementation-Vendor-Id: com.acme

  1. Specification-Title
    指定该 JAR 文件的规范标题。例如:
    Specification-Title: My Application API

  1. Specification-Version
    指定该 JAR 文件的规范版本。例如
    Specification-Version: 1.0.0

  1. Specification-Vendor
    指定该 JAR 文件的规范厂商。例如
    Specification-Vendor: Acme Corporation

  1. Sealed
    指定该 JAR 文件是否被封闭,即是否允许其他 JAR 文件修改该 JAR 文件中的类文件。例如:
    Sealed: true

MANIFEST.MF是被谁读取解析的


在 Java 中,MANIFEST.MF 文件通常被 Java 虚拟机(JVM)或相关的工具读取和解析。

例如,当我们在命令行使用 "java -jar" 命令运行一个打包成 JAR 文件的 Java 应用程序时,JVM 会读取 JAR 文件中的 MANIFEST.MF 文件来确定应用程序的主类,从而启动应用程序。

此外,也有许多其他的工具和库可以读取和解析 MANIFEST.MF 文件,

例如 Maven 和 Gradle 等构建工具,以及一些用于操作 JAR 文件的 Java 库,如 Java Archive (JAR) API 等。这些工具和库通常会使用 Java 类库中的 java.util.jar.Manifest 类来解析 MANIFEST.MF 文件,并将其转换为 Java 对象,以便于后续的操作和使用

MANIFEST.MF是所有的jar包必须要有的吗


不是所有的 JAR 文件都必须要包含 MANIFEST.MF 文件。在 Java 中,JAR 文件可以包含两种类型的条目:一种是类文件,另一种是元数据文件(如 MANIFEST.MF)。如果 JAR 文件中不包含 MANIFEST.MF 文件,则默认使用一个空的 MANIFEST.MF 文件。

但是,在某些情况下,我们可能需要在 MANIFEST.MF 文件中指定一些属性,例如应用程序的主类,或者其他的元数据信息。在这种情况下,我们就需要手动创建一个 MANIFEST.MF 文件,并将其添加到 JAR 文件中。文章来源地址https://www.toymoban.com/news/detail-617984.html

到了这里,关于你对MANIFEST.MF这个文件知道多少?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Chrome扩展的核心:manifest 文件(中)

    大家好,我是 dom 哥。我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星 。 在上一篇中已经完成了 Chrome 扩展的雏形,本篇接着介绍 manifest 中的可选字段,完善扩展的细节。 向 web 页面注入 JavaScript 和 CSS 。可以说这是 Chrome 扩展的灵魂。当指定 content_scri

    2024年02月04日
    浏览(46)
  • Chrome扩展的核心:manifest 文件(上)

    大家好,我是dom哥。我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以点个小星星。 Chrome 在全球浏览器市场份额独占 6 成,无论是对普通用户还是开发者,都是电脑里的必备利器。Chrome 无论是在性能还是 UI 交互方面都非常出色,而 Chrome 扩展则为开发者提供了接口,

    2024年02月05日
    浏览(41)
  • 谷歌插件开发:manifest.json 配置文件详解

    在当今的互联网时代,浏览器插件扮演着重要的角色,为用户提供了各种定制化的功能和增强体验。Google Chrome作为最受欢迎的浏览器之一,也提供了丰富的插件生态系统。而在Chrome插件的开发中,manifest.json配置文件起着至关重要的作用。本节将详细讲解manifest.json文件的作用

    2024年02月11日
    浏览(35)
  • 鼎博梯控MF1卡UID卡修复

    物业发了4张卡MF1卡,默认无法修改卡号的(当时不知道); 需要交物业费更新日期,手里只有两张卡,另外两个家人拿走了,正好我有修改卡的设备PM6,就准备只升级手里的两张卡,然后回去自己复制更新剩下的卡。 升级完后,拿出设备,解码导出最新数据,然后放上两张

    2024年02月09日
    浏览(35)
  • 磊科 NMW1324MF交换机安装指南[图文]

    1. 硬件安装 1.1. 安装前的准备 Ø 放置交换机的表面必须至少能承重4kg Ø 供电的电源插座距离交换机须在1.8米之内 Ø 确保电源线两端已可靠地连接在交换机后面板上的电源接口和供电的电源插座 Ø 保证交换机的四周可以良好的通风散热 Ø 请勿将重物放置在交换机上 1.

    2024年02月05日
    浏览(39)
  • MFC 如何修改MF_POPUP菜单项文本

             MFC 修改MF_POPUP菜单项文本的方法有点特别,记录下来备忘。         关键点是ModifyMenu()函数会把关联的下级菜单的句柄与菜单文本一起修改,因此需要把之前关联的下级菜单提取出来,调用ModifyMenu()把它放回去。

    2024年02月13日
    浏览(38)
  • 一万六千字大章:Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析

    Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析 每个扩展程序的根目录中都必须有一个 manifest.json 文件,其中列出了有关该扩展程序的结构和行为的重要信息。 1. 最小文件 2. 增加 content_scripts 3. 增加 service_worker 4. 增加 action 5. 增加侧边栏 1. Chrome 插件所必需的 key 1.1 man

    2024年01月19日
    浏览(102)
  • HBuilderX - uniapp - 运行项目到微信开发者工具 - 提示项目下缺少manifest.json文件

    1、有manifest.json的情况下报错,选中项目,右键菜单,重新识别项目类型,再次运行 参考文档: HBuilderX - 项目根目录下缺少manifest.json - 峻宇 - 博客园 2、HBuilderX 运行uniapp到微信开发者工具,提示工具的服务端口已关闭。要使用命令行调用工具,请在下方输入 y 以确认开启,

    2024年02月13日
    浏览(69)
  • VBA技术资料MF34:检查Excel自动筛选是否打开

    【分享成果,随喜正能量】聪明人,抬人不抬杠;傻子,抬杠不抬人。聪明人,把别人抬得很高,别人高兴、舒服了,看你顺眼了,自然就愿意帮你!而傻人呢?不分青红皂白,和人家抬杠,别人不高兴、不舒服,怎么会愿意帮你呢?果真是:会说话的想着说,不会说话的抢

    2024年02月15日
    浏览(41)
  • VBA技术资料MF36:VBA_在Excel中排序

    【分享成果,随喜正能量】一个人的气质,并不在容颜和身材,而是所经历过的往事,是内在留下的印迹,令人深沉而安谧。所以,优雅是一种阅历的凝聚;淡然是一段人生的沉淀。时间会让一颗灵魂,变得越来越动人。控制自己的脾气,做一个有修养的人。。 我给VBA的定义

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包