软件指南针:专注于软件传播与分享

Java归档文件管理工具jar用法详解

来源:原创 1360次浏览 0条评论
☞ 本文主要介绍软件Java的相关内容:Java归档文件管理工具jar用法详解

   其下列版本/分支可以参考本文:

  • 全部版本/分支

什么是JAR文件

JAR(Java Archive),意即Java归档文件。JAR 文件实际上就是一个或多个Java类字节码文件(.class)的打包压缩文件,采用常见的ZIP压缩算法(这意味着我们也可以直接使用支持ZIP算法的文件管理工具处理JAR文件)。JAR 文件主要用于压缩和发布Java字节码文件,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests和部署描述符,用于指示工具如何处理特定的 JAR。

JDK已经为我们自带了JAR文件的管理工具 -- jar.exe。我们主要使用jar.exe来压缩封装多个Java字节码文件。

在命令提示符中输入"jar"(前提是你已经安装了JDK,如果安装的是解压缩版本,可能还需额外的环境变量配置),即可看到jar工具的命令行用法。

jar工具用法

如上图所示,jar命令行的用法为:

jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

其中,{ctxui}表示必需的参数选项,你必须使用其中的一个或多个参数选项(如果允许同时使用的话)。[vfm0Me]表示可选的参数选项,你可以根据需要自行决定是否使用其中的参数选项。

如果使用参数f,就需要指定jar-file(JAR文件);使用参数m,就需要指定manifest-file(清单文件);使用参数e,就需要指定entry-point(入口点)。这些参数的指定顺序也应该和文件/入口点的指定顺序保持一致。

如果不使用参数m,将会生成默认的清单文件;如果使用参数m,将使用指定的文件作为清单文件;如果使用参数M,则表示不生成任何清单文件。

下面我们就结合具体的实例来介绍如何使用jar命令行工具打包压缩指定的Java字节码文件解压指定的JAR文件

打包为jar文件

创建新的普通jar文件

我们通常使用命令jar cvf jar文件名称 一个或多个class文件(多个class文件用空格隔开)创建一般的JAR文件,例如:

#将Sample.class和test/Hello.class文件打包为softown.jar文件
jar cvf softown.jar Sample.class test/Hello.class

如果class文件较多,我们可以直接使用.表示当前目录下的所有文件(自动递归子目录中的所有文件):

#打包当前目录下的所有文件为softown.jar
jar cvf softown.jar .

注意:命令提示符窗口的当前工作目录应该为整个应用的根目录。举个例子,假设Java类的包名均为org.softown.test,也就是说,所有的Java字节码文件都在D:/java/MyProject/org/softown/test目录中,我们应该将当前工作目录设为D:/java/MyProject,而不是D:/java/MyProject/org/softown/test。否则,包名文件夹不会封装进JAR文件中。生成的JAR文件也位于当前工作目录中(如果存在同名文件,将直接覆盖)。

如果当前工作目录不是应用根目录,你可以使用-C 目录路径来指定应用的根目录:

#打包test/softown目录下的所有文件
jar cvf softown.jar -C test/softown .
该命令语句实际上等同于:
#先跳转到目录test/softown
cd test/softown
#打包当前目录下的所有文件
jar cvf softown.jar .

创建可运行的jar文件

可运行的jar文件,实际上是一个可以直接被JVM运行的JAR格式的Java应用程序。众所周知,Java应用程序的启动入口就是某个类中的static main方法。因此,我们需要通过jar文件中的清单文件META-INF/MANIFEST.MF来指定main入口类的完全名称。我们可以使用两种方法来达到上述目的。

1、在打包jar文件时指定入口点(也就是main入口类),例如:

#将projects/softown目录下的所有文件打包为softown.jar,并且设定入口点为test.Hello(类名)
jar cvfe softown.jar test.Hello -C projects/softown .

2、我们也可以手动创建或更改MANIFEST.MF文件,在其中添加如下一行:

Main-Class:test.Hello

然后将该文件以清单文件的形式添加到jar文件中:

#将projects/softown目录下的所有文件打包为softown.jar,并使用指定的MANIFEST.MF作为清单文件
jar cvfm softown.jar MANIFEST.MF -C projects/softown .
点击这里查看MANIFEST.MF文件的详细信息

更新jar文件

对于一个已存在的jar文件,我们仍然可以向其中添加新的字节码文件或更新旧的字节码文件。如果已经存在同名的文件(路径结构也都相同),则覆盖更新原文件;如果不存在,则添加该文件。清单文件也可以通过这种方式进行更改。

jar uf softown.jar test/Hello2.class

查看或解压指定的jar文件

查看指定的jar文件

#将会列出softown.jar文件中的所有文件列表
jar tf softown.jar

解压指定的jar文件

#将会解压softown.jar文件到当前工作目录
jar xf softown.jar
你也可以使用WINRAR等支持ZIP算法的管理工具进行查看或解压操作。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部