META-INF文件夹中的MANIFEST.MF 的作用

Posted 飞弦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了META-INF文件夹中的MANIFEST.MF 的作用相关的知识,希望对你有一定的参考价值。

manifest文件是用来描述jar包的,它描述了该jar包的代码是谁的,什么版本,使用什么版本的类库等等。。。。具体如下:

1、基础格式

  manifest 文件的格式是很简单的,每一行都是 名-值 对应的:属性名开头,接着是 ":" ,然后是属性值,每行最多72个字符,如果需要增加,你可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。

2、属性

       Manifest-Version

  用来定义manifest文件的版本,例如:Manifest-Version: 1.0

   Created-By

  声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1

   Signature-Version

  定义jar文件的签名版本

  Class-Path

  应用程序或者类装载器使用该值来构建内部的类搜索路径

    Main-Class

  定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。

        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

  签名相关属性:

  Name: javax/mail/Address.class

  Digest-Algorithms: SHA MD5 

  SHA-Digest: AjR7RqnN//cdYGouxbd06mSVfI4=

  MD5-Digest: ZnTIQ2aQAtSNIOWXI1pQpw==

当要提供一个类库或编程接口时,描述信息显得是很重要,见以下范例: 

Manifest-Version: 1.0 
Created-By: JDJ example 
Class-Path: mail.jar activation.jar 


Name: com/example/myapp/ 
Specification-Title: MyApp 
Specification-Version: 2.4 
Specification-Vendor: example.com 
Implementation-Title: com.example.myapp 
Implementation-Version: 2002-03-05-A 
Implementation-Vendor: example.com 

3、Package Version 查询

在manifest文件中加入package描述后,就可以使用Java提供的java.lang.Package class进行Package 的信息查询,这里列举3个最基本的获取package object的方法 :
1.Package.getPackages():返回系统中所有定义的package列表 
2.Package.getPackage(String packagename):按名返回package 
3.Class.getPackage():返回给定class所在的package 

 

以上是关于META-INF文件夹中的MANIFEST.MF 的作用的主要内容,如果未能解决你的问题,请参考以下文章

Jar文件 META-INF/MANIFEST.MF文件详解

Gradle 重复输入错误:META-INF/MANIFEST.MF(或如何从 jar 中删除文件)

JAR包结构,META-INF/MANIFEST.MF文件详细说明[全部属性][打包][JDK]

从 JAR 中读取 META-INF/MANIFEST.MF [重复]

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

META-INF文件夹可以删除吗(急)