manifest是啥(manifest文件使用

请参考百度百科的说明:

MANIFEST.MF :此manifest文件定义与扩展和包相关的数据。 单词” manifest “意思是”表示”

打开Java的JAR文件时,可以清楚地看到文件包含META-INF目录。 此目录下始终有MANIFEST.MF,其中包含JAR文件的许多信息。 详细说明MANIFEST.MF文件的内容。 首先,让我们看看struts.jar中包含的manifest文件

管理版本: 1.0

创建- by : Apache ant1.5. 1

扩展- name 3360 struts框架

规范-标题3360 struts框架

se cification-vendor : apachesoftwarefoundation

规范-版本: 1.1

实施-标题3360 struts框架

实施-供应商: apachesoftwarefoundation

implementation-vendor-id : org.Apache

实施版本: 1.1

class-path : commons-beanutils.jar commons-collections.jar commons-digester.jar commons-loggging.jar commons -。

可以将MANIFEST配置信息分类为以下大类别:

一.一般属性

1 .管理版本

定义管理文件的版本。 例如Manifest-Version: 1.0

2 .创建者

声明此文件的生成者。 此属性通常由jar命令行工具生成。 例如Created-By: Apache Ant 1.5.1

3 .信号版本

定义jar文件的签名版本

4 .类-路径

APP应用程序或类加载器使用此值构建内部类搜索路径

2 .与APP应用程序相关的属性

1 .主类

定义必须是可执行类的jar文件的条目类。 定义属性后,可以从java -jar x.jar运行此类。

三.小程序的相关属性

1 .扩展列表

此属性指定小程序所需的扩展信息列表,列表中的每个名称对应于以下属性

2.-扩展- name

3.-规范-版本

4.-实施-版本

5. -Implementation-Vendor-Id

5.-实施- URL

4 .扩展徽标属性

1 .扩展名称

此属性定义jar文件(如扩展名称: struts framework )的标识符

5 .包扩展属性

1 .实施标题定义了扩展实现的标题

2 .实施版本定义了扩展实现的版本

3 .定义实施-厂商扩展实施的组织

4 .标识定义实施-厂商-标识扩展实现的组织

5.implementation -定义URL :扩展包的下载位置(URL )

6 .定义规范标题扩展规范的标题

7 .定义规范版本扩展规范的版本

8 .规范厂商声明了维持这一规范的组织

9. Sealed定义jar文件是否已归档,其值可以为true或false (这一点我还不太清楚)。

6 .与签名有关的属性

有关签名的属性,请参见JavaMail提供的mail.jar部分

name : javax/mail/address.class

Digest-Algorithms: SHA MD5

sha-digest : ajr7rqnn//cdygouxbd 06 msv fi4=

MD5-digest : zntiq2aqatsniowxi1pqpw==

此内容定义类签名的类名、计算摘要的算法名称以及相应的摘要内容(例如

ASE64方法进行编码)

七.自定义属性

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

编写MANIFEST.MF文件时的注意事项:

说明:一般编写MANIFEST.MF文件只需要用到Manifest-Version(MF文件版本号)、Main-Class(包含main方法的类)、Class-Path(执行这个jar包时的ClassPath,第三方依赖)

比如以下的例子:

Manifest-Version: 1.0Main-Class: test.Main

Class-Path: ./ ./lib/commons-collections-3.2.jar ./lib/commons-dbcp-1.2.2.jar ./lib/commons-lang-2.3.jar ./lib/commons-logging-1.1.jar

以下是需要注意的各个要点:

0. 最后一样一定要回车,空一行,不然无法识别最后一行的配置。

1. Manifest-Version、Main-Class和Class-Path后面跟着一个英文的冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath。

2. Class-Path中的各项应使用空格分隔,不是逗号或分号。

3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头,三个以上我没试过,不过不用空格开头和一个空格开头都是不行的,我已经试过了。

4. Class-Path写完之后最后一定要有一个空行。

5. jar包内有些配置文件想放在jar包外面,比如文件config.properties:如果这个文件是以路径方式载入的,比如new file(“./config/config.properties”),那么将config.properties放在jar包相同目录下的config目录下即可,也就是说“./”路径等价于jar包所在目录;如果这个文件是以ClassPath下的文件这种方式载入的,比如在Spring中载入classpath:config.properties,则在MF文件的配置文件的ClassPath中添加“./”,然后将这个配置文件与jar包放在同一个目录即可,当然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目录下的config目录下。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

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