2012-03-31 17:09 2768人阅读 评论(3) 收藏 举报
 分类:
Java(14)  配置心得(6) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 产品打包成 JAR 文件,其中会在 META-INF 目录下边存在声明文件 MANIFEST.MF 。此文件内容为

KEY: VALUE ,这样的一行行内容。以下整理总结了各种标准规范中指定的 KEY 含义。

Manifest-Version
    必有,但应该不用指定
Ant-Version
    如果使用 Ant 的话,会由 Ant 自己加进来
Created-By: 1.6.0-b105 (Sun Microsystems Inc.)
    如果使用 Ant 的话,会自动增加一个 Sun 的版本
Built-By
    编译的人名,最好能是英文吧……
Extension-Name
    Jar文件的标识。如果 Java 程序包符合规范的话,包(package)名应该符合这样的规则。
    域名反序.项目名甲.模块名甲.xxx
    比如一个完整类全名:cn.spads.soccerms.data.dao.RamMatchDao
    如果是一个模块封装成 .jar 的话,会存在其它任何 .jar 包都绝不可能出现这样的包:
    cn.spads.soccerms.data.*
    于是,可以认为 cn.spads.soccerms.data 是当下这个 .jar 包所独有的 Java 类包名前缀。
    于是用词作为 .jar 文件的唯一标识,非常合适。
Name
    签名用的“姓名”,推荐将产品名称放在这里,或者是产品模块的名称。
Comment
    注释,对产品的说明
Specification 和 Implementation
    Specification 是标准。比如 Servlet 标准,可能还有 JDBC 标准。
    Implementation 是针对这个标准的产品。
    如果没有特别的名字,其中 -Title 可以用和 Name 一致的内容,比如 Spads Soccer Management
    具体来说,有通用的 TitleVersion 和 Vendor ;
    还有 Implementation-Vendor-Id 和 Implementation-URL
Sealed

    只有 true 和 false 二种值。
    其中 true 意味着此 .jar 包拒绝别的 .jar 包里边的程序直接加载当前 .jar 包里边的类。
    对于组件型 .jar 包,应该是 false ;对于封装的 Java 应用,可以考虑用 true 。
Class-Path
    每个类路径用空格分隔,同时换行的话要以空格作为行首第一个字符。
    此类路径的基准是当前 .jar 文件所在目录。类路径应该是以此为基准的相对路径。
    比如存在文件结构:
    SoccerMS [目录]
        soccer-ms-1.1.0.jar
        lib [目录]
            mysql-connector-java-5.1.18-bin.jar
            postgresql-9.1-901.jdbc4.jar
    那么 soccer-ms-1.1.0.jar 中 MANIFEST.MF 
Main-Class
    一定要写类全名。此类中应包含 static public void main(String[] xxx) 方法,即主方法。
    然后可以通过命令行的 java -jar xxxx.jar 来运行 .jar 文件。

实际操作中,一个 .jar 包很可能实现了很多规范。于是 MANIFEST.MF 会有如下集中的段落:

  1. ############ 第 1 份规范 ###########
  2. Specification-Title: Java API for XML Processing
  3. Specification-Vendor: Sun Microsystems Inc.
  4. Specification-Version: 1.3
  5. Name: org/apache/xalan/
  6. Comment: Main Xalan engine implementing TrAX/JAXP
  7. Implementation-Title: org.apache.xalan
  8. Implementation-Version: @impl.version@
  9. Implementation-Vendor: Apache Software Foundation
  10. Implementation-URL: http://xml.apache.org/xalan-j/
  11. Name: org/apache/xpath/
  12. Comment: XPath engine
  13. Implementation-Title: org.apache.xpath
  14. Implementation-Version: @impl.version@
  15. Implementation-Vendor: Apache Software Foundation
  16. Implementation-URL: http://xml.apache.org/xalan-j/
  17. ############ 第 2 份规范 ###########
  18. Specification-Title: Runtime component of JCup
  19. Specification-Vendor: Princeton University
  20. Specification-Version: 0.10k
  21. Name: java_cup/runtime/
  22. Comment: Runtime component of JCup
  23. Implementation-Title: runtime
  24. Implementation-Version: @impl.version@
  25. Implementation-Vendor: Princeton University
  26. Implementation-URL: http://www.cs.princeton.edu/~appel/modern/java/CUP/

对于多段规范被实现,每个规范被多个部分联合实现,可以参看下边的例子,是一个很完整的例子。
http://www.oschina.net/code/explore/xalan/xalan-j_2_7_1/src/MANIFEST.MF

另外可以去看看以下这篇帖子,其中讲到了手动编写 MANIFEST.MF 文件的一些心得。
http://hi.baidu.com/lkdlhw_2000/blog/item/195519663df40920aa184ceb.html

这篇帖子在网上广泛流传,为防止地址打不开,给几个格式比较好的转载:
http://happysky.iteye.com/blog/391610
http://blog.163.com/shucker_gzb/blog/static/64514485200951815712456/

MANIFEST.INF!JAR规范中的更多相关文章

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

    参考百度百科的解释如下: http://baike.baidu.com/item/MANIFEST.MF MANIFEST.MF:这个 manifest 文件定义了与扩展和包相关的数据.单词“mani ...

  2. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...

  3. [Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  4. maven-将依赖的 jar包一起打包到项目 jar 包中

    前言: 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全,以下有两种方法可以规避这个问题. 一.在pom.xml 文件中 ...

  5. EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统

    EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...

  6. IDEA修改jar包中class文件后重新生成jar包

    一.背景 最新想要修改rebeyond大佬的冰蝎项目,特地去网上搜索如何修改jar包中的源码再替换回去的方法,但由于现在的一些文章写的太烂,导致走了很多弯路,因此写下这篇快速使用IDEA修改源码并替换 ...

  7. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

  8. html或者jsp页面引用jar包中的js文件

    一,页面上引用jar包中的js文件的方法 使用java web框架AppFuse的时候发现,jquery.bootstrap等js框架都封装到jar包里面了.这些js文件通过一个wro4j的工具对其进 ...

  9. 判断一个类到底是从哪个jar包中调用的工具类

    项目中使用的jar包较多时,会出现jar冲突的情况,有时候很难判断当前使用的这个类是从哪个jar包中调用的.因为一般我们只能看到jar包的名称,不清楚其中的类的目录结构. 这个类的作用就是说明当前调用 ...

随机推荐

  1. 【文章内容来自《Android 应用程序开发权威指南》(第四版)】如何设计兼容的用户界面的一些建议(有删改)

    最近一直在看的一本书是<Android 应用程序开发权威指南>(第四版),十分推荐.书中讲到了一些用户界面设计的规范,对于初学者我认为十分有必要,在这里码给大家,希望对我们都有用. 在我们 ...

  2. C语言错误之--初始值(低级错误)

    今天犯了一个低级错误,虽然低级,但是也不能忽视,一个低级错误以后可能小则浪费时间和精力,大则酿成整个app的项目bug.    

  3. XCode中#pragma的使用

    为了能够快速定位到代码的目标位置,可以使用#pragma:  

  4. Swift 中的函数(下)

    学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 import Foundation /******** ...

  5. 二维码扫描利用ZBar实现

    上次是根据系统的属性自己封装的一个二维码扫描,这次给大家介绍一下基于ZBar集成的类似于QQ二维码扫描界面的二维码扫描的效果.                                     ...

  6. android基础开发之scrollview

    scrollView 是android系统提供的一种 特殊的展示view. 其实我们很早就遇到过scrollview的东东,比如listview. 而google官方文档也提出,不要混合使用scrol ...

  7. JIRA系统部署推进上线流程

    JIRA介绍: JIRA是集项目计划.任务分配.需求管理.问题跟踪于一体的商业软件.JIRA创建的问题类型包括New Feature.Bug.Task和Improvement四种(可以自己定义),所以 ...

  8. android中实现view可以滑动的六种方法续篇(一)

    承接上一篇,如果你没有读过前四章方法,可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4985053.html 下面开始讲第五中方法. 五.利用Sc ...

  9. Java主要有那几种文件类型?各自的作用是什么

    1.源代码.java程序员编译的源代码. 2..class  字节码文件 jvm实现跨平台的中间编译文件. 3.jar包 讲字节码文件打包好,便于查找和使用.

  10. 了解linux内存管理机制(转)

    今天了解了下linux内存管理机制,在这里记录下,原文在这里http://ixdba.blog.51cto.com/2895551/541355 根据自己的理解画了张图: 下面是转载的内容: 一 物理 ...