以下是根据提供的内容重构后的文档:
# 属性
## 一般属性
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`:应用程序或者类装载器使用该值来构建内部的类搜索路径。
## Application 属性
1. `Main-Class`:定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 `java -jar x.jar` 来运行该jar文件。
## Applet 属性
1. `Extendsion-List`:该属性指定了小程序需要的扩展信息列表,列表中的每个名字对应以下的属性。
2. `
3. `
4. `
5. `
6. `
## 扩展标识属性
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`:声明了维护该规范的组织。
. Sealed
定义jar文件是否封存,值可以是true或者false。
签名相关属性:
- 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://zhaomeng.me
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
```
Manifest技巧:
1. 文件的冒号后面必须要空一个空格,否则会出错。
2. 文件的最后一行必须是一个回车换行符,否则也会出错。
3. 总是以Manifest-Version属性开头。
4. 每行最长72个字符,如果超过的话,采用续行。
5. 确认每行都以回车结束,否则该行将会被忽略。
6. 如果Class-Path中存在路径,使用"/"分隔目录,与平台无关。
7. 使用空行分隔主属性和package属性。
8. 使用"/"而不是"."来分隔package和class,比如com/example/myapp/。
9. class要以.class结尾,package要以/结尾。
10. Class-Path指定需要的jar,多个jar必须要在一行上,多个jar之间以空格隔开。
11. Class-Path不能使用jar中的jar。