概述:JAR是英文Java Archive File的简写,翻译过来的意思是Java归档文件;归档一词用在软件开发领域可以理解为将软件开发过程中形成的具有一定价值的成果物(Java领域诸如类、配置、静态资源等),内部文件保持有机联系,遵循文件的相应规律统一整理的过程。JAR文件设计的目的在于有的时候想向用户提供一个单独的文件,而不是包含大量类文件的目录结构。JAR文件就是为了此目的而设计的,既可以节省空间和改善性能。一个JAR文件既可以包含类文件,也可以包含图像和声音等其它类型的文件,甚至可以包含JAR等资源;另外JAR文件是使用了ZIP压缩格式进行压缩的,所以我们可以使用普通的解压缩软件就可以打开它。

接下来依次从以下几个方面讲解JAR:

  1. JAR文件的组成
  2. 创建JAR文件
  3. 可执行JAR文件

1、JAR文件的组成

首先我们以fastjson-1.2.60.jar(作为日常JAR代表)和first-app-by-gui-0.0.1.jar(作为非日常JAR)举例子。对两者解压,根目录组成如下图:

通过上图得知:不同JAR包中内容可能不一样,但都会包含一个META-INF的目录;因此可以简单理解为JAR中包含两类目录:META-INF目录和META-INF之外的目录。

META-INF之外的目录:可以理解为资源目录,一般存放类文件、依赖JAR以及图片或视频等资源;大体某一类资源会放到单独的目录下,且目录的命名一般根据类文件的包名或者清单文件中某些属性配置的一致,在此不做赘述;

META-INF目录:每个JAR文件中还包含一个清单文件(MANIFEST.MF),用来描述归档文件的特殊特性且这个清单文件如果不做特殊设置必须位于META-INF目录中,这算是一个规定吧。这个清单文件的内容复杂度随归档文件而定,一个Springboot应用的清单内容如下。需要注意的是:一般来说在清单文件中配置的内容会被归档文件中某些逻辑读取,这个了解下即可;

Manifest-Version: 1.0
Implementation-Title: first-app-by-gui
Implementation-Version: 0.0.1
Built-By: Administrator
Implementation-Vendor-Id: thinking-in-spring-boot
Spring-Boot-Version: 2.0.2.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.dongnao.FirstAppByGuiApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_144
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-boot-starter-parent/first-app-by-gui

2、创建JAR文件

创建一个新JAR文件常用的命令格式为:jar options jarFileName file1 file2 ...;该命令类似于UNIX中的tar命令,其中options是命令选项,file既可以为文件名称也可以为目录名,采用路径时jar命令将进行递归获取目录下文件,选项列表和日常用法如下图:

3、可执行JAR文件

一般在清单文件中例如通过Main-Class: org.springframework.boot.loader.JarLauncher的方式来指定程序的主类,需要注意的是主类为类的全路径名且不需要扩展名,指定主类后我们可以通过java -jar Test.jar简单的命令来启动程序;简单来说当我们采用java -jar命令启动程序后,会去清单内查找是否已配置Main-Class,如果未配置提示找不到主类;一般来说可执行jar用的不多,常规jar偏多,但随着近几年Springboot应用的普及,可执行JAR被广泛应用于各个场景中,需要注意的是通过java -jar启动程序是属于JAVA早就提供的命令,各种应用JAR依然要遵守规范,只是Springboot使它火热而已!

4、多版本JAR文件

简单来说是随着JDK版本更替,在老版本用到的类会出现过时、重命名为其它类甚至删除掉,那么在新老应用中需要做针对性的调整,比如在JAVA7中用到A和B两个类,那么到了JAVA9由于A和B被替代,需要调整为C和D这种情形,对此从JAVA9开始引入了多版本JAR来提供解决这一问题的手段。简单来说就是在META-0INF中创建对应文件夹和通过命令来指定,由于不是特殊行业使用场景不多,在此不赘述!

以上,完了!

JAR文件概述(2021版)相关推荐

  1. 【软考】信息系统项目管理师,考试大纲与历年考点分析,学习方法(2021版)

    序 信息系统项目管理师,考试大纲与历年考点分析,学习方法(2021版)1.顺序 因为内容量,考试大纲>历年考点>学习方法 但是使用频率却是,学习方法>历年考点>考试大纲 所以本 ...

  2. PCL(Point Cloud Library)学习指南资料推荐(2021版)

    PCL(Point Cloud Library)学习指南&资料推荐(2021版) 版权 双愚 https://zhuanlan.zhihu.com/p/268524083?utm_source ...

  3. 全球及中国铁路行业十四五规划目标与投资建设状况分析报告2021版

    全球及中国铁路行业十四五规划目标与投资建设状况分析报告2021版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜 ...

  4. 全球及中国建筑产业十四五投资机会及运营风险分析报告2021版

    全球及中国建筑产业十四五投资机会及运营风险分析报告2021版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿 ...

  5. 全球及中国智能建筑行业十四五规模预测与发展格局分析报告2021版

    全球及中国智能建筑行业十四五规模预测与发展格局分析报告2021版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜 ...

  6. 04 JAR 文件规范

    Version: Java SE 18 目录 一.介绍 二.模块化的JAR文件 三.多版本JAR文件 四.模块化多版本JAR文件 五.META-INF 目录 六.Name-Value 键值对部分 七. ...

  7. 安装java打开.jar文件

    Java下载安装.环境配置教程(Windows 10 超详细的图文版 ) 进入java官网下载页面:https://www.oracle.com/java/technologies/javase-jd ...

  8. 将jar文件做成exe可运行文件

    用Java 开发程序,发布时总要考虑的问题就是怎么在使用者的机器上装好JRE.要考虑的问题很多:使用者有没有能力独自安装JRE,使用者已有的JRE和我们需要 的版本是不是一致,会不会出现版本问题,等等 ...

  9. 中国再生金属行业发展前景及投资策略研究报告2021版

    中国再生金属行业发展前景及投资策略研究报告2021版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿晟信合研 ...

  10. 中国冶金行业投资战略及未来发展形势研究报告2021版

    中国冶金行业投资战略及未来发展形势研究报告2021版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿晟信合研 ...

最新文章

  1. CUDA中grid、block、thread、warp与SM、SP的关系
  2. 项目交付为什么失败?-记我在某个项目中的迷思
  3. python安装、anaconda安装、pycharm安装(学习笔记,自己重新整理后的内容,最新版本工具安装)
  4. 【Transformer】Do Vision Transformers See Like Convolutional Neural Networks?
  5. JAVA 实现 JWT
  6. ubuntu安装zookeeper和kafka
  7. 定时休眠 linux,linux系统编程手册 定时器和休眠
  8. ORB_SLAM2探秘 第一章
  9. 拓端tecdat|R语言 RevoScaleR的大规模数据集决策树模型应用案例
  10. 2021年下半年软考数据库系统工程师真题答案解析
  11. 五邑大学计算机学院奖学金,关于开展2019-2020学年度学生综合测评和奖学金评定工作的通知...
  12. JDK与JRE各种版本下载地址
  13. 安全防范报警系统产品质量监督检测测试中心(上海)
  14. Arduino基础应用学习
  15. Impala集群搭建报错,主节点启动成功,但是worker节点的impalad启动失败
  16. net mvc jQuery print 打印隐藏dom 除去页眉页脚
  17. 【编程题训练】统计射击比赛成绩
  18. QT 中怎样实现延时 stop
  19. 【数据库】Redis
  20. web表格控件FineReport作为企业web表格制作软件的核心优势

热门文章

  1. 十个相见恨晚的编程工具
  2. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航
  3. hibernate历史版本下载
  4. hibernate5.x下载地址
  5. 又在折腾那个手机骷髅病毒,真无聊
  6. 南天PR2、PR2E驱动下载,xp,win7,win8,win8.1,win10 32位64位驱动下载安装教程
  7. 计算机键盘如何打字课件,电脑键盘打字入门基础.ppt
  8. php wps导入数据库,金山的wps的表格怎样导入sqlserver2008数据库中??_wps excel表格怎么导入数据库...
  9. 关于中国移动宽带(中国铁通)比较卡
  10. 万年历 源码 php,万年历 PHP