Jar的定义
首先套用百度百科对Jar的解释:Jar(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 Jar文件是 Ear 文件(企业 Jar 文件)。Jar 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 Jar 中包含特殊的文件,如manifests和部署描述符,用来指示工具如何处理特定的 Jar。
Jar 文件格式提供了许多优势和功能,其中很多是传统的压缩格式如 Zip所没有提供的。它们包括:
² 安全性可以对文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。
² 减少下载时间 如果一个 applet 捆绑到一个 Jar 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。
² 压缩 Jar 格式允许您压缩文件以提高存储效率。
² 传输平台扩展 Java 扩展框架 (Java Extensions Framework) 提供了向 Java 核心平台添加功能的方法,这些扩展是用 Jar文件打包的。
² 包密封 存储在 Jar 文件中的包可以选择进行 密封,以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一 Jar 文件中找到。
² 包版本控制 一个 Jar 文件可以包含有关它所包含的文件的数据,如厂商和版本信息。
² 可移植性 处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。
Jar的文件结构
Jar文件的结构是什么样的呢,让我们看一下Java运行时的基础类库rt.jar的解压后截图:
Jar文件与 Zip文件唯一的区别就是在 Jar 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 Jar 文件的时候自动创建的。如上图中的2号区域。里面多了一个MANIFEST.MF文件,这个文件描述了该Jar的很多作息(包括Jar文件的入口类、类路径和版本等),下图是ant.jar的MANIFEST.MF文件的内容截图(点击了解更多关于MANIFEST.MF):
Jar命令的用法
Jar命令相信对于Java攻城狮而言应该不陌生。
1.创建Jar包并显示打包过程 jar cvf Jar文件名称需要打包的目录或是文件
我本地项目simplecd截图如下:
我想把src下面的所有文件打成一个名为simplecd的Jar包,运行cmd进入编译后的目录F:\workspace\simplecd\WebContent\WEB-INF\classes,执行jar cvf simplecd.jar .
注意最后面的“.”代表当前文件夹,如果有子目录,它会对其进行递归处理。
2.显示指定Jar包中的内容,即Jar包中的文件列表,用上面生成的simplecd.jar包来做实验,运行jar vtf simplecd.jar,运行结果如下:
3.解压Jar包,当然我们也可以用解压缩工具如winrar来解压。但是如果我们电脑上没有装呢,那我们就可以用:jar xvf simplecd.jar运行结果如图:
如果我们只想提取Jar包的某一个文件,那么我们可以运行jar xf simplecd.jar Test.class
4.往已知Jar包中添加文件,当我们需要往Jar包中添加一些新的功能时,可以把新编译后的文件加进原来的 Jar包,
如在原来的simplecd.jar中加入对字符串、日期和数字的工具类,如下图:
我们可以进入刚才打包好的Jar包目录,运行: jar uvf simplecd.jar -C F:\workspace\test\bin .运行结果如下图:
然后我们运行jar vtf simplecd.jar结果如下图:
很明显,我们刚才新编译的三个Class文件已经加进来了。
5.创建一个Jar索引(JarIndex)Jar i simplecd.jar运行以后,我们就可以在simplecd.jar中的目录META-INF下面找到一个INDEX.LIST
里面的内容如下(包含每个已索引的 Jar 文件中包含的包或者类的名字):
那么JarIndex出现的意义是什么呢?它有什么作用呢?
网上找了一个牛人的解释:
如果一个应用程序或者 applet 捆绑到多个 Jar文件中,那么类装载器就使用一个简单的线性搜索算法搜索类路径中的每一个元素,这使类装载器可能要下载并打开许多个 Jar 文件,直到找到所要的类或者资源。如果类装载器试图寻找一个不存在的资源,那么在应用程序或者 applet 中的所有 Jar文件都会下载。对于大型的网络应用程序和 applet,这会导致启动缓慢、响应迟缓并浪费带宽。
从 JDK 1.3 以后,Jar文件格式开始支持索引以优化网络应用程序中类的搜索过程,特别是 applet。JarIndex 机制收集在 applet 或者应用程序中定义的所有 JAR 文件的内容,并将这些信息存储到第一个 JAR 文件中的索引文件中。下载了第一个 Jar文件后,applet 类装载器将使用收集的内容信息高效地装载 Jar 文件。这个目录信息存储在根 Jar文件的 META-INF 目录中的一个名为 INDEX.LIST 的简单文本文件中。
6.创建执行的Jar文件,如果我们要把Jar包打成可执行的话,得指定Main-Class即运行时的主类,拿上面项目为例,运行
jar cvfme simplecd.jar manifest.txt me.simplecd.SimpleCD -C F:\workspace\simp
lecd\WebContent\WEB-INF\classes .
运行完成后,在C盘根目录下面就生成了simplecd.jar文件:
接下来我们可以运行命令:java –jar simplecd.jar来运行这个jar包:
我们看到指定的SimpleCD类正在运行。
通过以上的学习,你是否对jar命令可以运用自如了呢,如果有什么疑问或是文章中有什么遗漏之处,可以联系QQ:442983562,当然也可以交流下java学习心得,欢迎交流分享。
相关推荐
Maven使用实战-从入门到精通实践【张振华.Jack】 Maven简介、Maven主要做什么用? 项目对象模型(POM) 坐标(Coordinates)、打包方式(Packaging)、项目描述 项目子父级关系(parent) 依赖管理(dependency),冲突了...
这使得应用可以直接通过`java -jar`命令运行,无需额外的服务器设置。此外,内嵌的Tomcat或Jetty服务器使得部署更简单。 接下来是Spring Boot的配置。配置文件主要有两种:`application.properties`和`application....
- **打包部署**:Maven提供了多种打包类型,如jar、war等,通过`mvn package`或`mvn install`命令完成项目的打包和部署。 - **项目文档生成**:Maven可以自动生成项目文档,包括API文档、项目报告等。 #### 四、...
### 知识点详解:精通J2me嵌入式开发 - 环境配置 #### 一、J2ME概述 J2ME(Java 2 Micro Edition)是Java平台的一个版本,专门针对移动设备和嵌入式系统设计,如手机、PDA、消费电子产品等。它基于Java的核心语言...
metabase BI平台入门到精通全家桶(一) Metabase是基于Java语言开发的免费报表BI平台,它提供了一个灵活、可扩展、易于使用的数据分析和报表生成解决方案。下面是 metabase 的安装和使用指南。 metabase 安装 ...
**Maven入门到精通** Maven,一个强大的Java项目管理工具,由Apache软件基金会开发,旨在简化构建过程,提供统一的构建系统,并通过依赖管理和项目信息管理,帮助开发者更高效地构建、测试和部署Java应用。它通过...
6. **Java开发工具**:JDK还包含了多种开发工具,如javadoc(生成API文档)、jar(打包和管理类库)、jconsole(监视JVM性能)、jvisualvm(分析和调试Java应用)等。 7. **异常处理**:Java中的异常处理是通过try-...
【Maven的常用命令】 - `mvn clean`:清理项目产生的临时文件和目标目录。 - `mvn compile`:编译源代码。 - `mvn test`:运行项目的单元测试。 - `mvn package`:打包项目,生成JAR或WAR文件。 - `mvn install`:...
### Java从入门到精通之工具篇 #### 一、JDK (Java Development Kit) JDK作为Java的核心,包含了Java运行环境(JRE)、各种Java工具和基础类库(rt.jar)。掌握JDK对于学习Java至关重要。 ##### 1、JDK 的下载与安装 ...
### Java学习从入门到精通之工具篇:深入解析与实践指南 #### 一、JDK (Java Development Kit) ##### 1、JDK的核心地位与重要性 JDK,即Java Development Kit,是Java开发的核心,它包含了Java运行环境(Java ...
3. **JDK命令工具**:`java`用于运行类,`javac`是编译器,`jar`用于打包类库,`javadoc`生成API文档。熟练掌握这些命令是编写Java程序的基础。 **二、JDK文档** **JDK Documentation**是开发者的重要参考,它详细...
对这些命令的熟练掌握及其参数的精通,是成为Java高手的必经之路。JDK文档提供了详尽的使用指南,是学习者的宝贵资源。 #### 二、JDK Documentation:编程宝典 JDK文档是学习Java过程中不可或缺的参考资料,它覆盖...
3. `jar`:打包工具,用于创建和管理Java归档(JAR)文件。 4. `javadoc`:生成API文档的工具,帮助开发者理解代码结构和功能。 深入学习Java编程,JDK文档是必不可少的资源。文档详尽地覆盖了Java的所有方面,是...
### Java学习从入门到精通——知识点详解 #### 一、工具篇 **1. JDK (Java Development Kit)** - **定义**: JDK 是整个 Java 技术的核心,包含了 Java 运行环境(Java Runtime Environment, JRE)、一系列 Java ...