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