META-INF目录是干啥用的?
平時寫的web項目打包成jar文件之后會發現里面不知道為啥多出了一個叫做META-INF的目錄,點開之后發現里面還出現了一個manifest.mf文件。出于好奇我在網上找了找這個目錄的用途,結果還是沒有找到一個比較通俗的解釋,我這種菜鳥對那種比較正規的解釋還是理解有困難的。
所以總結了一下,我感覺這樣解釋的話對于我們這些初學者來說還是比較容易理解的。jar文件
開發中可以直接使用java class文件來運行程序,不過這樣不太方便,所以出現了jar文件來提供發布和運行,jar文件實際上是class文件的zip壓縮存檔,有很多工具都可以操縱這種格式的文件,所以jar文件本身并不能表達應用程序的便簽信息。
META-INF目錄的出現
為了提供存檔的便簽信息,出現了Manifest.mf文件,jar文件中有一個特定的目錄來存放標簽信息:META-INF目錄,主要應關注其中
一個名叫manifest.mf的文件,它包含了jar文件的內容描述,在應用程序運行時向JVM提供應用程序的信息。
關于MEATA-INF目錄的作用,百度上的解釋是這樣的(正規的解釋):
META-INF相當于一個信息包,目錄中的文件和目錄獲得Java 2平臺的認可與解釋,用來配置應用程序、擴展程序、類加載器和服務manifest.mf文件,在用jar打包時自動生成。jar文件都有一個默認產生的META-INF目錄和其中的manifest.mf文件 ? 使用jar命令可以直接產生META-INF目錄和manifest.mf文件,例如: Manifest-Version: 1.0 Built-By: Dxy Created-By: IntelliJ IDEA Build-Jdk: 1.8.0_144其實這些信息就是你jar文件的描述信息
Manifest-Version:生成的manifest.mf文件的版本 ? Built-By:文件的創建用戶命名,在IDEA的配置文件中可以設置 ? Created-By:文件的生成者,一般由jar命令行工具生成,這里顯示的時idea ? Bulid-Jdk:所使用的JDK環境其實manifest.mf文件中的配置信息除了上面的四個之外,還是有很多的,以下是幾個常見的屬性:
一、一般屬性1:Signature-Vresion:定義jar文件的簽名版本2:Class-Path:內部的類搜索路徑,提供給應用程序或者類裝載器二、應用程序的相關屬性1、Main-Class:定義jar文件的入口類,該類必須可執行!一旦定義了該屬性就可以使用java -jar 程序名.jar 來運行該jar文件還有manifest.mf文件的格式
manifest 文件中的每一行都是 key-value 對應的:屬性名開頭,接著是 ":" ,然后是屬性值,每行最多72個字符,如果需要增加,可以在下一行續行,續行以空格開頭,以空格開頭的行都會被視為前一行的續行。總結一下:META-INF目錄實際上就是描述jar文件中的信息的一個目錄,目錄中除了manifest.mf文件之外其實還是可以配置很多信息文件的,這些文件都是在應用程序運行的過程中向其提供jar文件的內容描述的。
僅限個人學習使用,錯誤在所難免。總結
以上是生活随笔為你收集整理的META-INF目录是干啥用的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql驱动为什么自动加载_为什么JD
- 下一篇: java遍历对象属性_java开发中遍历