Java Jar文件

2018-02-05 17:17 更新

Java IO教程 - Java Jar文件

JAR文件格式

JAR(Java Archive)是基于ZIP文件格式的文件格式。

它用于捆绑Java应用程序或小程序的资源,类文件,声音文件,图像等。它还提供数据压缩。

一个JAR文件作为一种特殊类型的ZIP文件。您可以对JAR文件的内容进行数字签名,以提供安全性。它提供了一个平台无关的文件格式。

您可以使用JAR API在Java程序中处理JAR文件。

JAR文件可以具有可选的META-INF目录,以包含包含应用程序配置信息的文件和目录。

META-INF目录

下表列出了META-INF目录中的条目。

名称类型目的
MANIFEST.MFFile它包含扩展和包相关数据。
INDEX.LISTFile它包含软件包的位置信息。类加载器使用它来加快类搜索和加载过程。
X.SFFileX是基本文件名。它存储jar文件的签名。
X.DSAFileX是基本文件名。它存储相应签名文件的数字签名。
/servicesDirectory此目录包含所有服务提供程序配置文件。
   

JAR工具

JDK提供了一个jar工具来创建和操作JAR文件。您还可以使用java.util.jar包中的类使用Java API创建和操作JAR文件。

JAR API有一些新类来处理清单文件。 Manifest类表示清单文件。

要使用jar工具创建JAR文件,许多命令行选项都可用。

以下代码列出了jar工具的命令行选项。

选项描述
-c创建一个新的JAR文件。
-u更新现有的JAR文件。
-x从JAR文件中提取命名文件或所有文件。
-t列出JAR文件的目录。
-f指定JAR文件名。
-m包括来自指定文件的清单信息。
-M不要创建清单文件。
-i为指定的JAR文件生成索引信息。它在JAR文件中的META-INF目录下创建一个INDEX.LIST文件。
-0不要压缩JAR文件中的条目。只存储它们。选项值为零,表示零压缩。
-e将指定的类名添加为清单文件主要部分中Main-Class条目的值。
-v在标准输出上生成详细输出
-C切换到指定的目录并在JAR文件中包括以下文件。请注意,该选项为大写(C)。小写字母(c)用于指示创建JAR文件选项。

创建JAR文件

使用以下命令创建一个带有两个类文件(名为A.class和B.class)的test.jar JAR文件:

jar cf test.jar  A.class B.class

在上面的命令中,选项c表示我们正在创建一个新的JAR文件,选项f表示我们正在指定一个JAR文件名,它是test.jar。

在命令结束时,我们可以指定要包括在JAR文件中的一个或多个文件名或目录名。

要查看test.jar文件的内容,请执行以下命令:

jar tf test.jar

选项t表示我们对JAR文件的目录感兴趣。

选项f表示我们指定了JAR文件名,在这种情况下是test.jar。

上述命令将生成以下输出:

META-INF/
META-INF/MANIFEST.MF A.class
B.class

jar 命令自动为您创建了两个额外的东西:一个名为META-INF的目录和一个名为MANIFEST.MF的文件在META-INF目录中。

以下命令将通过在当前工作目录中包含所有内容来创建test.jar文件。

jar cf test.jar  *

以下命令将创建一个JAR文件,其中包含book / archives目录中的所有类文件以及book / images目录中的所有图像。

jar cf test.jar  book/archives/*.class  book/images

我们可以在创建JAR文件时使用命令行选项指定清单文件。

清单文件是一个文本文件,其中包含您的JAR文件的所有清单条目。

清单文件必须在文件末尾有一个空行。否则,将不处理清单文件中的最后一个条目。

以下命令将在创建test.jar文件(包括当前目录中的所有文件和子目录)时使用manifest.txt文件。

jar cfm test.jar manifest.txt *

上述命令中使用的选项的顺序很重要。 f出现在m之前,我们必须在清单文件名manifest.txt之前指定JAR文件名test.jar。

您可以重写以上命令,如下所示:

jar cmf manifest.txt test.jar *

更新JAR文件

使用选项u更新现有的JAR文件条目或其清单文件。

以下命令将向现有的test.jar文件添加一个C.class文件:

jar uf  test.jar  C.class

假设我们有一个test.jar文件,并且我们要将它的清单文件中的Main-Class条目更改为HelloWorld类。您可以使用以下命令:

jar ufe  test.jar HelloWorld

在此命令中,选项u表示我们正在更新JAR文件;选项f指示我们指定JAR文件名,即test.jar,选项e表示我们在test.jar文件中为MANIFEST.MF文件指定Main-Class条目的值为HelloWorld。

索引JAR文件

我们可以为JAR文件生成一个索引文件。它用于加快类加载。

在创建JAR文件后,必须在单独的命令中使用选项i和jar命令。

jar i test.jar

此命令将向test.jar文件添加一个META-INF / INDEX.LIST文件。我们可以通过使用以下命令列出test.jar文件的目录来验证它:

jar tf test.jar

提取JAR文件

要从JAR文件中提取所有或部分条目,请使用选项x与jar命令。

从test.jar文件中提取所有条目

jar xf  test.jar

选项x从JAR文件中提取条目。

选项f指定文件名,它是test.jar。

上述命令将从当前工作目录中的test.jar文件中提取所有条目。

它将创建与test.jar文件中存在的相同的目录结构。

要从JAR文件中提取单个条目,请在命令结尾处列出它们。条目应该用空格分隔。

以下命令将从test.jar文件中提取A.class和book / HelloWorld.class条目:

jar xf  test.jar A.class  book/HelloWorld.class

要从书目录中提取所有类文件,可以使用以下命令:

jar xf  test.jar  book/*.class

列表JAR文件内容

使用选项t与jar命令来列出标准输出上的JAR文件的目录。

jar tf test.jar
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号