文章出處

一、前言                                    

   通過執行形如 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間使用<CR><LF>作為分隔符(Unix下則使用<LF>作為分隔符,Mac下則使用<CR>作為分隔符)。

  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

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()