一、前言                                    通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF,那是为什么呢? 其实关于JAR包的描述信息、启动时的配置信息和安全性信息等均保存在META-INF下,因此了解META-INF目录对发布、部署十分重要的哦!下面仅为部分内容的整理,待日后深入实践后再补充完整。官方文档为:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html 二、META-INF/MAINFEST.MF清单文件组成元素                 META-INF/MAINFEST.MF清单文件由1个 main-section 和0到N个 individual-section 组成,而每个section中含有多个attribute组成,其中 main-section 中的attribute命名为 main-attribute ,而 individual-section 中的attribute命名为 perentry-attribute 。 各个attribute间使用作为分隔符(Unix下则使用作为分隔符,Mac下则使用作为分隔符)。 individual-section 以名为 Name 的 perentry-attribute 来标识该区域,且作为该区域的起始行。 示例: Manifest-Version: 1.0 Created-By: 1.2 (Sun Microsystems Inc.) Sealed: true Name: foo/bar/ Sealed: false main-section 用于描述JAR包的安全、配置信息,和对JAR包内所有包和文件的默认信息。 每个 individual-section 用于描述JAR包中单个包或文件,但不是JAR包中的每个包和文件都必须配置 individual-section ,但对于需要被签名的文件就必须配置对应的 individual-section 了。 三、 main-attribute 详解                             1. 常规属性 Mainfest-Version: JAR版本号 Created-By: 生产者 Signature-Version: 签名版本 Class-Path: 依赖项列表,若存在多个依赖项时则采用空格分隔。依赖项路径为以JAR包路径为参考系的相对路径 2. 可执行的JAR包属性 Main-Class: main函数所在的全限定类名 四、 perentry-attribute 详解                         1. Name属性, individual-section 的起始属性,包命名规范形如:com/test/myapp/,文件命名规范形如:com/test/myapp/MyApp.class。 2. 定义文件内容 Content-Type: MIME类型(格式为:type/subtype。例如,image/jpeg) 五、注意事项                               1. 键值对独立占据一行或多行; 2. 每行最大长度为72个字符; 3. 每行的最后一个字符必须以回车符换行符结尾,而且回车符换行符不能有空格(使用正则表达式表达每行规范就是/^.+\S\r\n$/); 4. 若键值对独立占据多行,那么从第二行起,必须以一个或以上的空格开头(使用正则表达式表达第二行及其余行的规范就是/^[ ]{1,}.+\S\r\n$/)。 尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4046856.html ^_^肥仔John 参考                                   http://blog.csdn.net/zhifeiyu2008/article/details/8829637 http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

http://www.cnblogs.com/fsjohnhuang/p/4046856.html

Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)的更多相关文章

  1. Java魔法堂:打包知识点之jar

    一.前言    通过eclipse导出jar包十分方便快捷,但作为码农岂能满足GUI的便捷呢?所以一起来CLI吧! 二.JAR包 JAR包是基于ZIP文件格式,用于将多个.java文件和各种资源文件, ...

  2. Java魔法堂:类加载器入了个门

    一.前言 <Java魔法堂:类加载机制入了个门>中提及整个类加载流程中只有加载阶段作为码农的我们可以入手干预,其余均由JVM处理.本文将记录加载阶段的核心组件——类加载器的相关信息,以便日 ...

  3. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解     目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六. ...

  4. Java魔法堂:打包知识点之META-INF/MAINFEST.MF

    一.前言     通过执行形如 jar -cvf src.jar src 命令将多个.class文件打包成JAR包时,你会发现JAR包中除了src目录外还多了个MATE-INF/MAINFEST.MF ...

  5. Java魔法堂:以Windows服务的形式运行Java程序

    一.前言 由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅. 二.Java Service Wrapp ...

  6. Java魔法堂:枚举类型详解

    一.前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息. // C# enum MyColor{ RED = , BLUE = } Console.Write ...

  7. Java魔法堂:解读基于Type Erasure的泛型

    一.前言 还记得JDK1.4时遍历列表的辛酸吗?我可是记忆犹新啊,那时因项目需求我从C#转身到Java的怀抱,然后因JDK1.4少了泛型这样语法糖(还有自动装箱.拆箱),让我受尽苦头啊,不过也反映自己 ...

  8. Java魔法堂:类加载机制入了个门

    一.前言 当在CMD/SHELL中输入 $ java Main<CR><LF> 后,Main程序就开始运行了,但在运行之前总得先把Main.class及其所依赖的类加载到JVM ...

  9. Java魔法堂:URI、URL(含URL Protocol Handler)和URN

    一.前言 过去一直搞不清什么是URI什么是URL,现在是时候好好弄清楚它们了!本文作为学习笔记,以便日后查询,若有纰漏请大家指正! 二.从URI说起    1. 概念 URI(Uniform Reso ...

随机推荐

  1. css清除浮动解决方案

    清除浮动包括清除子元素的浮动和清除上级元素的浮动,其中清除上级元素的浮动,只需设置clear为both就可以了,而清除子元素的浮动则可以用空标签法.clearfix方法或overflow方法.因清除上 ...

  2. Android jar包混淆

    具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...

  3. 关于Redis的一些常识

    http://blog.csdn.net/mengxianhua/article/details/8961713 关于Redis的一些常识 2013-05-22 18:00 13315人阅读 评论(0 ...

  4. HDU 1104 Remainder (BFS)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1104 题意:给你一个n.m.k,有四种操作n+m,n-m,n*m,n%m,问你最少经过多少步,使得最后 ...

  5. UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>

    D - 基爷的中位数 Time Limit: 5000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  6. 360WIFI下使用Fiddler抓取手机APP流量

    过程其实很简单,仅仅做个记录.过程适用Android和ios手机 fidder的原理如下: 下面开始步骤: 1.在fidder中设置代理:Tools--->Fidder Options,设置端口 ...

  7. AIX5.3CPU占用高的问题核查

    AIX5.3 CPU占用高问题核查步骤 1.topas查看占用cpu占用最高的进程的PID 2.执行: ps -mp PID -o THREAD 以查找相应进程下所有正在占用 CPU 的线程的TID ...

  8. [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现

    在上一篇文章里实现了对媒体文体的DRM加密,现在一起来实现License的预发放. 所谓预发放就是在播放媒体文件之前先获取到License,License获取成功后,可直接在电脑上进行媒体文件的播放. ...

  9. Virtual Friends(并查集+map)

    Virtual Friends Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  10. Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新

    Android Project from Existing Code 生成 R 文件错误.失败等问题解决办法 - 持续更新 git  上的项目,pull下来之后用Android Project fro ...