Java Jar :Manifest

來源:互聯網
上載者:User

標籤:

 

Jar (Java Archive File, java歸檔檔案),它其實也是一個zip檔案。它包括了一個可選的META-INF目錄。可以使用命令列中的jar命令來產生一個jar檔案,也可以使用java.util.jar API來產生一個歸檔檔案。

Jar檔案中META-INF目錄的作用:應用配置、擴充、類載入器、提供服務。在這個目錄下,主要有下列幾個檔案(或者目錄):

 

MANIFEST.MF

是一個資訊清單檔,定義了擴充和與包相關的資訊

INDEX.LIST

它是JarIndex實現的一部分,類載入器使用它可以提高載入速度

x.SF

簽名檔案

x.DSA

數位簽章

service/

存放的是service provider設定檔

 

例如:

1)mysql-jdbc.jar

 

 

2)servlet-api.jar

 

 

3)activemq-all.jar

 

 

 

 

 

MANIFEST 中的主要屬性

 

先來看看mysql-jdbc.jar中的MANIFEST.MF檔案:

Manifest-Version: 1.0Ant-Version: Apache Ant 1.8.2Created-By: 1.5.0_22-b03 (Sun Microsystems Inc.)Built-By: pb2userBundle-Vendor: Oracle CorporationBundle-Classpath: .Bundle-Version: 5.1.31Bundle-Name: Oracle Corporation‘ JDBC Driver for MySQLBundle-ManifestVersion: 2Bundle-SymbolicName: com.mysql.jdbcExport-Package: com.mysql.jdbc;version="5.1.31";uses:="com.mysql.jdbc. log,javax.naming,javax.net.ssl,javax.xml.transform,org.xml.sax",com.m ysql.jdbc.jdbc2.optional;version="5.1.31";uses:="com.mysql.jdbc,com.m ysql.jdbc.log,javax.naming,javax.sql,javax.transaction.xa",com.mysql. jdbc.log;version="5.1.31",com.mysql.jdbc.profiler;version="5.1.31";us es:="com.mysql.jdbc",com.mysql.jdbc.util;version="5.1.31";uses:="com. mysql.jdbc.log",com.mysql.jdbc.exceptions;version="5.1.31",com.mysql. jdbc.exceptions.jdbc4;version="5.1.31";uses:="com.mysql.jdbc",com.mys ql.jdbc.interceptors;version="5.1.31";uses:="com.mysql.jdbc",com.mysq l.jdbc.integration.c3p0;version="5.1.31",com.mysql.jdbc.integration.j boss;version="5.1.31",com.mysql.jdbc.configs;version="5.1.31",org.gjt .mm.mysql;version="5.1.31"Import-Package: javax.net,javax.net.ssl;version="[1.0.1, 2.0.0)";resol ution:=optional,javax.xml.parsers, javax.xml.stream,javax.xml.transfo rm,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transfor m.stax,javax.xml.transform.stream,org.w3c.dom,org.xml.sax,org.xml.sax .helpers;resolution:=optional,javax.naming,javax.naming.spi,javax.sql ,javax.transaction.xa;version="[1.0.1, 2.0.0)";resolution:=optional,c om.mchange.v2.c3p0;version="[0.9.1.2, 1.0.0)";resolution:=optional,or g.jboss.resource.adapter.jdbc;resolution:=optional,org.jboss.resource .adapter.jdbc.vendor;resolution:=optionalName: commonSpecification-Title: JDBCSpecification-Version: 4.0Specification-Vendor: Oracle CorporationImplementation-Title: MySQL Connector JavaImplementation-Version: 5.1.31Implementation-Vendor-Id: com.mysqlImplementation-Vendor: Oracle

 上面檔案中Bundle-*是OSGi的內容,這裡不作說明。

 

Manifest-Version: 是資訊清單檔的版本。不是jar包的版本。

Created-By: jar包建立者。

Main-Class:jar包中的主類。是應用程式的入口,這個屬性只在jar作為一個獨立的java 應用時使用。

 

Specification-* 代表Java標準中的說明資訊。

Implementation-* 代表該Jar包是某個Java標準的實現。

 

Mysql-jdbc.jar中的資訊就可以理解為:MySql-jdbc-5.1.31.jar中是JDBC 4.0標準的實現。

 

同理:servlet.jar中的MANIFEST.MF如下:

Manifest-Version: 1.0Ant-Version: Apache Ant 1.9.4Created-By: 1.5.0_22-b03 (Sun Microsystems Inc.)X-Compile-Source-JDK: 1.5X-Compile-Target-JDK: 1.5Name: javax/servlet/Specification-Title: Java API for ServletsSpecification-Version: 2.5Specification-Vendor: Sun Microsystems, Inc.Implementation-Title: javax.servletImplementation-Version: 2.5.MR2Implementation-Vendor: Apache Software Foundation

意思就是:由ASF實現的servlet-api.jar是對java標準中的Servlets的實現。 

  

另外,還有一個主要的屬性Sealed:這個表示jar檔案中的pacakage是否是密封的。

 

下面是兩個資訊清單檔:

清單一:整個jar是密封的。

Manifest-Version: 1.0Sealed: true

 

清單二:指定的package是密封的: 

Manifest-Version: 1.0Name: com/fjn/java/util/jar/Sealed: true

 Jar包中,只有com/fjn/java/util/jar包是密封的。

 

清單三:

Manifest-Version: 1.0Sealed: trueName: com/fjn/java/util/jar/Sealed: false

 整個jar包中,只有com/fjn/java/util/jar包不是密封的,其餘的都是密封的。

 

Java Jar :Manifest

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.