JAR包详解_jar包解析结构-程序员宅基地

技术标签: Java  java  

一、什么是JAR包

JAR包就是 Java Archive File,顾名思义,它的应用是与 Java 息息相关的,是 Java 的一种文档格式,是一种与平台无关的文件格式,可将多个文件合成一个文件。jar 包与 zip 包非常相似——准确地说,它就是 zip 包,所以叫它文件包。jar 与 zip 唯一的区别就是在 jar 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,该文件是在生成 jar 文件的时候自动创建的,作为jar里面的"详情单",包含了该Jar包的版本、创建人和类搜索路径Class-Path等信息,当然如果是可执行Jar包,会包含Main-Class属性,表明Main方法入口,尤其是较为重要的Class-Path和Main-Class。

此外,值得注意的是,因为jar包主要是对class文件进行打包,而java编译生成的class文件是平台无关的,这就意味着jar包是跨平台的,所以不必关心涉及具体平台的问题。说到jar里面的文件,咱们来看看最普通的一个带有静态页面的springboot项目jar里面的内容,就会发现解压出来的jar并不简单,为了贴近实际咱们未做任何删减,可以看到有很多东西

只需要运行如下指令,就能看到jar里面的内容(调用jar指令的前提是已经配置了jdk的环境变量)

jar -tf jar包名

其中-tf 后接的jar就是我们要查看的jar。

二、为什么要打jar包

当我们开发了一个程序以后,程序中有很多的类,如果需要提供给别人使用,发给对方一大堆源文件是非常不好的,因此通常需要把这些类以及相关的资源文件打包成一个 jar 包,把这个 jar 包提供给别人使用,同时提供给使用者清晰的文档。这样他人在拿到我们提供的jar之后,就能方便地进行调用。而且安全。能够对JAR文件进行数字签名,只让能够识别数字签名的用户使用里面的东西。

三、如何打jar包

参考博主博文《DEA+Maven打JAR包的两种方法》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZZQHELLO2018/article/details/124449153

智能推荐

小李跟同桌说,他发现了一个免费学Python的地方,非广告 | Python技能树测评-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏2次。Python 技能树,真免费学 Python

UOJ449 集训队作业2018 喂鸽子_uoj449 喂鸽子-程序员宅基地

文章浏览阅读671次。ProblemUOJ看题后:boshi:这是一道简单题队长:这题好像不难,感觉和猎人杀有点像我:Solution感觉自己越来越菜了,再这样下去,要是正式考试送温暖岂不是连温暖都拿不到了。。一脸min-max反演的样子,由于每个鸽子都等价,枚举子集大小 iii 即可ans=∑i=1n(ni)(−1)i+1nif(i)ans=\sum_{i=1}^n\binom n i(-1)..._uoj449 喂鸽子

python时间函数的使用-程序员宅基地

文章浏览阅读2.2k次。Python时间与日期操作(datetime、time、calendar)相关模块模块 说明 time time是一个仅包含与日期和时间相关的函数和常量的模块,在本模块中定义了C/C++编写的几个类。例如,struct_time类 datetime datetime是一个使用面向对象编程设计的模块,可以在Python中使用日期和时间。它定义了几个表示日期和时间的类 calendar 日历是一个提供函数的模块,以及与Calendar相关的几个类,它们支持将日...

几个 GitHub 高级搜索技巧,这就分享给你_github搜索-程序员宅基地

文章浏览阅读2.5k次。可能你在 GitHub 搜索某些项目的时候,会直接在搜索框里面使用关键词搜一下_github搜索

java中从Map集合里面取键和值的四种方式_java map获取键和值-程序员宅基地

文章浏览阅读4.2k次。同时实现Map中键和值的取用_java map获取键和值

esp8266 sdk入门指南_Apache Beam实战指南 | 手把手教你玩转大数据存储HdfsIO-程序员宅基地

文章浏览阅读129次。策划编辑 | Natalie作者 | 张海涛审校 | Natalie编辑 | VincentAI 前线导读:本文是Apache Beam 实战指南系列文章的第三篇内容,将对 Beam 框架中的 HDFSIO 和 MySQLIO 源码进行剖析,并结合应用示例和代码解读带你进一步了解如何结合 Beam 玩转大数据存储重要组件 HDFS。系列文章第一篇回顾Apache Beam 实战指南 | ..._apache esp

随便推点

2021-07-12嵌入式学习---交叉编译_交叉编译 prefix-程序员宅基地

文章浏览阅读336次。1、交叉编译交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例:我们在Ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行的,不是在Ubuntu Linux上面运行。2、为什么要交叉编译1.有时是因为目的平台(C51)上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;2.有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;3.有时又是因为目的_交叉编译 prefix

使用java Future模式异步调用详细实例展示-程序员宅基地

文章浏览阅读821次。java Future模式想必大家都比较熟悉,大体实现起来也比较简单,因为模式单一,我先介绍一下一般步骤,再讲一下,目前项目中遇到具体问题的解决方式 一般来说,使用java Future模式实现多线程,具体步骤如下, 1.新建一个异步任务类,如 xxxTask 实现 Callable<xxxTask.Result>(或者Runnable<xxx>...

一张图看懂阿里云新发布的物联网设备上云神器——HiTSDB + IoT套件-程序员宅基地

文章浏览阅读276次。HiTSDB +IoT 套件是阿里云专门为物联网领域的开发人员推出的,目的是帮助开发者搭建安全性能强大的数据通道,方便终端(如传感器、执行器、嵌入式设备或智能家电等等)和云端的双向通信。全球多节点部署让海量设备在全球范围都可以安全低延时接入阿里云IoT Hub,在安全上提供多重防护保障设备云端安全,在性能上能够支撑亿级设备长连接以及百万消息并发。阿里云..._hitsdb +iot 套件

mysql 5.5 创建用户_在MySQL 5.5.18下创建用户不能登录-程序员宅基地

文章浏览阅读65次。今天用Grant创建用户名是quot;DanielWquot;,后来登录死活密码不对,重新创建一次,用户名是quot;Daniel@localhostquot;,也就遇到点麻烦,虽然没有解决,但是算提醒大家了。今天用Grant创建用户名是"DanielW",后来登录死活密码不对,重新创建一次,用户名是"Daniel@localhost",也就是说加上了主机名,flush privileges后退出..._mysql5.5创建测试用户怎么登录

主数据管理(MDM)与元数据管理_mdm主数据 元数据-程序员宅基地

文章浏览阅读2.2k次。主数据(Master Data)和元数据(Meta Data)是两个完全不同的概念。元数据是指表示数据的相关信息,比如数据定义等,而主数据是指实例数据,比如产品目录信息等。比如,某省地税开发了一套征收管理软件,以市为单位部署了17套,每套征收管理软件中的元数据都是一样的,但是主数据还是需要进行管理的。主数据管理和传统数据仓库解决方案不是一个概念,数据仓库会将各个业务系统的数据集中在一起在进行业务的_mdm主数据 元数据

DPDK Release 22.07-程序员宅基地

文章浏览阅读495次。新功能添加了初始化RISC-V架构支持。为RISC-V架构添加了EAL实现。移植测试的初始设备是基于SiFive Freedom U740 SoC的HiFive Unmatched开发板。从理论上说,此实现应与任何兼容rv64gc ISA的实现配合使用,同时MMU支持合理的地址空间大小(U740使用sv39 MMU)。添加了顺序锁。添加了新的同步原语:顺序锁(seqloc..._dpdk yt8531

推荐文章

热门文章

相关标签