Eclipse的两个配置文件之MANIFEST.MF

时间:2024-03-06 22:39:32

格式详解:

1. 基本格式  

属性名称+:+空格+属性值  

2. 没行最多72个字符,换行继续必须以空格开头  

3. 文件最后必须要有一个回车换行  

4. Class-Path 当前路径是jar包所在目录,如果要引用当前目录下一个子目录中的jar包,使用以下格式  

子目录/xxx.jar 子目录/yyy.jar  

技巧:多个jar包的引用,可以使用 .classpath 文件中classpathentry 的值  

5. 在任何平台上路径分割符都是 /,多个jar包引用以空格分开

 

内容详解:

     打开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-dig
 ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
 truts-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文件。

 

OSGi 包 header 说明

  1. Bundle-Activator 指定用于启动和停止包的类的名称。  
  2. Bundle-Classpath 指定包含类和资源的 JAR 文件或目录。句号(‘.’)、默认值指定了包的 JAR 的根目录。  
  3. Bundle-ContactAddress 包含供应商的联系地址。  
  4. Bundle-Copyright 包含此包的版权说明。  
  5. Bundle-DocURL 指定了一个指向有关此包的文档的 URL。  
  6. Bundle-Localization 指定了包的本地化文件的位置,其默认值为 OSGI-INF/l10n/bundle。  
  7. Bundle-ManifestVersion 指定该包遵从 OSGi 规范 V3 或者 OSGi 规范 V4 中的规则。  
  8. Bundle-Name 指定该包的可读名称(无空格)。  
  9. Bundle-SymbolicName 一个强制的 header,用于为此包指定一个惟一的名称。  
  10. Bundle-Vendor 包含一个包供应商的可读名称。  
  11. Bundle-Version 指定包的版本,默认为 0.0.0。  
  12. Export-Package 指定此包的导出包(exported package)。  
  13. Fragment-Host 定义此片段的本地包(host bundle)。  
  14. Import-Package 声明此包的导入包(imported package)。  
  15. Require-Bundle 指定从其他包所需的导出。  
  16. Import-Service 不建议使用  
  17. Export-Service 不建议使用