如何使用Java的JAR文件

简介: 如何使用Java的JAR文件

引言

hello,大家好,我是小面!今天有个小伙伴私信我说如何使用Java的Jar文件?今天将给大家介绍一下Java的jar文件。

在Java世界中,如果有任何大家都熟悉的文件格式,那就是JAR文件。JAR文件是一个归档文件或一组文件,作为一个具有.JAR文件扩展名的单元分发。归档就像将所有Java和其他资源文件放在一个单独的案例中,并准备将它们作为.jar文件(其他归档扩展名也存在)发布。本编程教程介绍了JAR文件格式背后的概念,并简要介绍了如何在Java中使用.JAR文件。

What is JAR?

JAR代表Java Archive。它是一种独立于平台的文件格式,专门用于将多个文件压缩和捆绑到一个称为JAR文件的归档文件中。所使用的压缩技术基于流行的ZIP文件格式。尽管JAR可以用作通用归档工具,但它的主要开发目的是在单个HTTP事务中下载浏览器中的文件集合。这是Java小程序流行时的场景,类、图像和声音文件作为HTTP请求下载并由浏览器托管。

在过去,它对性能产生了更好的影响,网页很快就对下载的小程序做出了响应。由于文件压缩被吸收到JAR文件中,它减少了文件大小,因此下载时间更短。另一个方面是,可以对每个JAR文件进行数字签名,以验证其来源。

使用JAR在Java中归档文件

JAR仍然是一种流行的文件归档格式,至少在Java领域是如此,它被广泛用于许多不同的目的。JAR文件的一些优点包括:

  • JAR文件是一种跨平台归档格式
  • JAR文件可以归档各种文件类型,无论是类、音频文件、图像还是基于文本的
  • JAR文件向后兼容
  • 几乎所有的开发人员都喜欢JAR文件,这使得它成为Java世界中大多数涉及归档文件的场景的明显选择

在典型的场景中,用Java开发的应用程序由许多源文件组成。编译后,将为每个公共类或接口创建对象代码或.class文件。这些文件在通过网络传输时,例如在HTTP协议请求中传输,每个文件传输都需要单独的套接字连接,可能非常大。例如,类文件的大小可能只有几百字节。因此,分别为每个文件进行每个套接字连接和断开连接所需的时间只是浪费时间。

现在考虑这个场景:所有文件都是JAR归档的,使用PKZIP算法压缩,并作为一个单元分发。此传输的性能将与我们之前的场景完全不同。这将显著提高应用程序的整体性能,因为JAR文件现在作为单个单元接收,然后可以根据接收端的程序要求将其解压缩为原始形式。这实际上是Java Applet时代存在JAR文件的经典原因。

Java应用程序中JAR文件的用例

Java小程序可能已经过时了,但它们的配套库仍然健在。JAR文件就是其中之一。将库打包在JAR归档文件中是很方便的,正如我们所看到的,大多数Java库都是打包在JAR文件中的。开发人员可以通过将所有类文件打包到一个归档文件中,以便于分发,从而制作一个fat-jar。然而,这是不鼓励的。相反,建议将一个更精简、更有凝聚力的文件编译成一个单独的归档文件。这种将文件分离为较小的关注单元的做法不仅利用了存储,而且还利用了库的一些小升级,从而使其他无关文件不受干扰。

什么是可执行JAR文件

程序员可以将可执行的Java程序与它使用的库、图像和其他文件一起打包到JAR文件中。开发人员可以简单地以单击并运行的方式执行JAR文件。可执行JAR文件保存了一个清单文件,指定了类路径和应用程序的入口点,它只是包含主方法的类:main class:App.MainClass。一些操作系统允许它在单击时运行;其他人使用简单的命令行调用:

$ java -jar app.jar

如何在Java中创建JAR文件

Java开发工具包(JDK)提供了一个.jar工具,用于将Java代码打包成jar文件格式。从JDK9开始,JAR也得到了增强,可以使用模块,但在本教程中,我们将重点介绍使用JAR工具的基本功能。注意,一旦安装了JDK,程序员就可以使用JAR文件了。创建JAR文件的基本命令如下:

$ jar cf jar-file input-file(s)

这里参数c表示我们希望创建一个JAR文件,而f表示我们希望输出到一个文件。现在,假设我们有三个文件:a.txt、b.class和c.jpg。如果我们想创建一个名为app的JAR文件,我们可以使用以下命令:

jar cf app a.txt b.class c.jpg

使用此命令将创建一个演示app的jar文件。请注意,JAR文件实际上可以有任何扩展名,也可以没有扩展名。如果我们需要一个特定的.jar扩展名,我们可以按如下方式重写上述命令:

jar cf app.jar a.txt b.class c.jpg

一旦创建了JAR文件,输入文件就会被压缩,并且可以作为一个单元分发:在本例中是app.JAR。

如何查看JAR内容

现在,在创建JAR文件之后,我们可能需要查看JAR文件的内容。执行此操作的基本命令如下:

$ jar tf app.jar

这显示了一个类似于以下内容的列表,取决于JAR中的文件名:

META-INF/
META-INF/MANIFEST.MF
a.txt
b.class
c.jpg

注意,除了我们归档的三个文件外,JAR文件还包含META-INF文件夹/目录中的MANIFEST.MF。这是由jar命令自动生成的。该文件包含一个名称-值对列表,用冒号分隔并分组为部分。

如果JAR文件只用于归档,那么这个文件没有多大用处。如果要将应用程序绑定到JAR文件中,则该文件必须包含Java虚拟机(JVM)运行程序的入口点。

入口点指的是包含主方法的类。用于下载的JAR文件包含文件列表及其类路径信息。我们创建的JAR文件非常基本,仅包含以下信息。MANIFEST.MF文件是一个简单的文本文件,可以由任何文本编辑器打开:

Manifest-Version: 1.0
Created-By: 19.0.1 (Oracle Corporation)

如何提取JAR文件

可以使用以下命令提取JAR文件:

$ jar xf app.jar

当提取JAR工具时,它会在当前目录中创建文件的副本;原始JAR文件保持不变。提取将覆盖当前目录和路径名中具有相同名称的所有文件。

如何更新JAR文件

开发人员可以使用以下命令更新或向现有JAR文件添加新文件:

$ jar uf app.jar d.class

在将新文件添加到现有存档中时应小心,因为存档中具有相同名称的任何文件都将被自动覆盖。

关于使用JavaJAR归档文件的最后思考

使用JAR工具时有很多可用选项。一个简单的jar –help命令可以快速概述这些参数。作为一名Java程序员,不可能没有直接或间接处理过JAR工具。

还有另一种名为WAR(Web Archive)的文件格式,用于捆绑Java Web应用程序和EAR(Enterprise Archive),用于归档由多个模块组成的企业应用程序。这些是JAR格式的特殊扩展,但与JAR不同,EAR和WAR文件不能作为独立应用程序运行。


相关文章
|
8月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
315 1
|
11月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
468 14
|
Java Linux
java的jar后台启动
java的jar后台启动
269 14
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
691 5
|
11月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
314 0
|
11月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
753 0
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
598 0
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
课时103:生成jar文件
本文介绍了Java中生成和使用JAR文件的基本概念与操作。JAR文件用于将多个类文件打包成一个压缩文件,便于管理和分发。通过JDK提供的`jar`命令可以创建JAR文件,并可通过设置CLASSPATH环境变量来配置和使用这些文件。文中还演示了如何定义、编译和打包一个简单的Java程序为JAR文件,并详细解释了JAR文件的结构及配置方法。此外,简要提及了JDK 1.9后引入的模块化系统对JAR文件的影响。
436 1