使用JAR文件

本文内容摘自李刚老师《疯狂Java讲义》一书

什么是JAR文件

JAR文件的全称是Java Archive File,意思就是Java档案文件。通常JAR文件是一种压缩文件,与我们常见的ZIP压缩文件兼容,通常也被称为JAR包。JAR文件与ZIP文件的区别就是在JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件是在生成JAR文件时由系统自动创建的。

如下是rt.jar包的结构
在这里插入图片描述
当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个JAR文件提供给别人使用。只要别人在系统的CLASSPATH环境变量中添加这个JAR文件,则Java虚拟机就可以自动在内存中解压这个JAR包,把这个JAR文件当成一个路径,在这个路径中查找所需要的类或包层次对应的路径结构。

使用JAR文件的好处

使用JAR文件有以下好处

  1. 安全。能够对JAR文件进行数字签名,只让能够识别数字签名的用户使用里面的东西。
  2. 加快下载速度。
  3. 压缩。使文件变小,JAR的压缩机制和ZIP完全相同。
  4. 包封装。能够让JAR包里面的文件依赖于统一版本的类文件。
  5. 可移植性。JAR包作为内嵌在Java平台内部处理的标准,能够在各种平台上直接使用。

jar命令详解

jar是随JDK自动安装的,在JDK安装目录下的bin目录中,运行它需要用到JDK安装目录下lib目录中的tools.jar文件,但通常系统会自动加载tools.jar,无须我们显式设置。

1.创建JAR文件:jar cf test.jar test

该命令没有显示压缩过程,执行结果是将当前路径下的test路径下的全部内容生成一个test.jar文件。如果当前目录中已经存在test.jar文件,那么该文件将被覆盖。

2.创建JAR文件,并显示压缩过程:jar cvf test.jar test

在这里插入图片描述

3.不使用清单文件:jar cvfM test.jar test

4.自定义清单文件内容:jar cvfm test.jar manifest.mf test

其中m选项指定读取用户清单文件信息。因此在生成的JAR包中清单文件META-INF/MANIFEST.MF的内容有所不同,它会在原有清单文件基础上增加manifest.mf文件的内容

5.查看JAR包内容:jar tf test.jar

在这里插入图片描述
当JAR包中的文件路径和文件非常多时,直接执行该命令将无法看到包的全部内容(因为命令行窗口能显示的行数有限),此时可利用重定向将显示结果保存到文件中。

jar tf xx.jar > xx.txt

执行上面命令看不到任何输出,但命令执行结束后,将在当前路径下生成一个xx.txt文件,该文件中保存了xx.jar包里文件的详细信息。

6.查看JAR包详细内容:jar tvf test.jar

7.解压缩:jar xf test.jar

8.带提示信息解压缩:jar xvf test.jar

9.更新JAR文件:jar uf test.jar Hello.class

更新test.jar中的Hello.class文件。如果test.jar中已有Hello.class文件,则使用新的Hello.class文件替换原来的Hello.class文件;如果test.jar中没有Hello.class文件,则把新的Hello.class文件添加到test.jar文件中。

10.更新时显示详细信息:jar uvf test.jar Hello.class

更多执行参数可以通过 jar命令来查看
在这里插入图片描述

创建可执行的JAR包

创建可执行的JAR包的关键在于:让javaw命令知道JAR包中哪个类是主类,javaw命令可以通过运行该主类来运行程序。
jar命令有一个-e选项,该选项指定JAR包中作为程序入口的主类的类名。因此,制作一个可执行的JAR包只要增加-e选项即可。执行命令如下

jar cvfe test.jar Test *.class

上面命令把当前目录下的所有*.class文件都压缩到test.jar包中,并指定使用Test类作为程序的入口。

以下是我的实验
在这里插入图片描述
运行上面的JAR包有两种方式

  1. 使用java命令,使用java运行时的语法是:java -jar test.jar
  2. 使用javaw命令,使用javaw运行时的语法是:javaw test.jar
D:\ideawork\eHealth\eHealth-core\target\classes>java -jar xx.jar
测试资源清理的finalize方法

上面可以看到我运行jar包成功执行了指定主类

关于JAR包的技巧

JAR文件实际上就是ZIP文件,所以可以使用一些常见的解压缩工具来解压缩JAR文件,如windows下的WinRAR、WinZip等,以及Linux下的unzip等。使用WinRAR和WinZip等工具比使用JAR命令更加直观、方便。

如果我们不喜欢jar命令的字符界面,也可以使用WinRAR工具来创建JAR包。因为WinRAR工具创建压缩文件时不会自动添加清单文件,所以需要手动添加清单文件,即需要手动建立META-INF路径,并在该路径下建立一个MANIFEST.MF文件。

除此之外,Java还可能生成两种压缩包:WAR包和EAR包。其中WAR文件是Web Archive File,它对应一个Web应用文档;而EAR文件就是Enterprise Archive File,它对应一个企业应用文档(通常由Web应用和EJB两个部分组成)。实际上,WAR包和EAR包的压缩格式及压缩方式与JAR包完全一样,只是改变了文件后缀而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章