- 浏览: 167947 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
小灯笼:
RabbitMQ实战:分布式消息队列高效部署及插件集群开发信息 ...
MQ(一) rabbitmq -
快乐的小六:
分布式消息队列高效部署及插件集群开发信息数据监控、分析实战(R ...
MQ(一) rabbitmq -
lgxjob:
spring schema -
h416373073:
博主写的用心,多谢分享
spring schema -
司马饮之:
顶一个
try catch finally 关闭流标准的写法
JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。
深入了解jar的详细信息,请看他的官方文档。
google或者百度是度很难搜索到官方文档,我偶然看一个开原框架的中,它使用SPI扩展协议,使用到META-INF,而且给出了一个英文链接。是oracle的官方网介绍。
https://docs.oracle.com/javase/1.5.0/docs/guide/jar/jar.html#Intro
Introduction
jar 是基于zip的,把多个文件打成一片一个包。jar本质上是一个zip文件,并且包含了一个META-INF文件夹,这是ZIP不具有的。一个jar包可以用jar命令创建,具体的API可以参见java.util.jar. 对于命名,他并没有严格的要求,可以是合法的任何名称。
在很多场合,jar包里的文件并不是简单的聚合了classes文件或者资源文件。他还可以用来blocks应用和扩展.其中META-INF目录,用于存储包和扩展信息,包括了安全,版本,护展和服务等信息。
上文提到的SPI,就跟这个目录有关。以及之前提到到一个博客,spring,schema, 其中spring.handlers,spring.schemas这些文档都存放到这个目录,为什么要放把这两个文件放到META-INF下,而不是其他目录下,是有特别处理的。
The META-INF directory
META-INF下的文件和目录,是java2平台认可的和承认的。
MANIFEST.MF
The manifest file that is used to define extension and package related data.
举例:
用maven打成jar信息
用jdk的工具,打成jar包该文件的信息:
The manifest file that is used to define extension and package related data.
INDEX.LIST
This file is generated by the new "-i" option of the jar tool, which contains location information for packages defined in an application or extension. It is part of the JarIndex implementation and used by class loaders to speed up their class loading process.
x.SF
The signature file for the JAR file. 'x' stands for the base file name.
x.DSA
The signature block file associated with the signature file with the same base file name. This file stores the digital signature of the corresponding signature file.
services/
This directory stores all the service provider configuration files.
上面提到的这些文件,不是瞎写的,要求支持RFC822
见下面英文描述。
有几点需要注意,每个mainfease信息由name和value构成,同一个文件中出现两个name,那么后一个name覆盖前面的的信息,如果不指定value,默认value与name相同.信息以空行来划分。
深入了解jar的详细信息,请看他的官方文档。
google或者百度是度很难搜索到官方文档,我偶然看一个开原框架的中,它使用SPI扩展协议,使用到META-INF,而且给出了一个英文链接。是oracle的官方网介绍。
https://docs.oracle.com/javase/1.5.0/docs/guide/jar/jar.html#Intro
Introduction
jar 是基于zip的,把多个文件打成一片一个包。jar本质上是一个zip文件,并且包含了一个META-INF文件夹,这是ZIP不具有的。一个jar包可以用jar命令创建,具体的API可以参见java.util.jar. 对于命名,他并没有严格的要求,可以是合法的任何名称。
在很多场合,jar包里的文件并不是简单的聚合了classes文件或者资源文件。他还可以用来blocks应用和扩展.其中META-INF目录,用于存储包和扩展信息,包括了安全,版本,护展和服务等信息。
上文提到的SPI,就跟这个目录有关。以及之前提到到一个博客,spring,schema, 其中spring.handlers,spring.schemas这些文档都存放到这个目录,为什么要放把这两个文件放到META-INF下,而不是其他目录下,是有特别处理的。
The META-INF directory
META-INF下的文件和目录,是java2平台认可的和承认的。
MANIFEST.MF
The manifest file that is used to define extension and package related data.
举例:
用maven打成jar信息
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: Administror Build-Jdk: 1.6.0_45
用jdk的工具,打成jar包该文件的信息:
Manifest-Version: 1.0 Created-By: 1.6.0_45 (Sun Microsystems Inc.)MANIFEST.MF
The manifest file that is used to define extension and package related data.
INDEX.LIST
This file is generated by the new "-i" option of the jar tool, which contains location information for packages defined in an application or extension. It is part of the JarIndex implementation and used by class loaders to speed up their class loading process.
x.SF
The signature file for the JAR file. 'x' stands for the base file name.
x.DSA
The signature block file associated with the signature file with the same base file name. This file stores the digital signature of the corresponding signature file.
services/
This directory stores all the service provider configuration files.
上面提到的这些文件,不是瞎写的,要求支持RFC822
见下面英文描述。
Name-Value pairs and Sections Before we go to the details of the contents of the individual configuration files, some format convention needs to be defined. In most cases, information contained within the manifest file and signature files is represented as so-called "name: value" pairs inspired by the RFC822 standard. We also call these pairs headers or attributes. Groups of name-value pairs are known as a "section". Sections are separated from other sections by empty lines. Binary data of any form is represented as base64. Continuations are required for binary data which causes line length to exceed 72 bytes. Examples of binary data are digests and signatures. Implementations shall support header values of up to 65535 bytes. All the specifications in this document use the same grammar in which terminal symbols are shown in fixed width font and non-terminal symbols are shown in italic type face. Specification: section: *header +newline nonempty-section: +header +newline newline: CR LF | LF | CR (not followed by LF) header: name : value name: alphanum *headerchar value: SPACE *otherchar newline *continuation continuation: SPACE *otherchar newline alphanum: {A-Z} | {a-z} | {0-9} headerchar: alphanum | - | _ otherchar: any UTF-8 character except NUL, CR and LF ; Also: To prevent mangling of files sent via straight e-mail, no ; header will start with the four letters "From". Non-terminal symbols defined in the above specification will be referenced in the following specifications.
有几点需要注意,每个mainfease信息由name和value构成,同一个文件中出现两个name,那么后一个name覆盖前面的的信息,如果不指定value,默认value与name相同.信息以空行来划分。
发表评论
-
软件移植
2022-01-30 20:17 0此篇是工作随笔: 基础原理: 1、OS所处的 ... -
信号量与PV java
2018-01-02 15:11 1110进程间通信: 进程通常 ... -
http资料整理
2017-09-25 11:11 664http://blog.csdn.net/java199366 ... -
ACL权限管理
2017-09-19 10:56 2490ACL : access control list 访问权限管 ... -
Cookie 浅谈
2017-09-05 20:25 678随记Cookie 先看源码 /** * * ... -
JVM
2017-05-02 17:47 640http://blog.csdn.net/java199366 ... -
dubbo升级dubbox
2016-11-09 14:59 6047笔者公司部分应用用dubbo暴露服务,随着一些新人加盟,很多 ... -
spring 懒加载与dubbo 客户端校验
2016-09-19 18:41 2983Dubbo的启动时服务依赖检查是,对象实例化时,判断远程调用是 ... -
标识接口
2015-01-13 14:26 737摘要:标识接口是没有任何方法和属性的接口.它仅仅表明它的类属于 ... -
排序算法
2014-12-25 16:26 679package a; public class So ... -
java 序列化
2014-11-26 15:02 1076java序列化,是把对象序列化成流,转成流的目的是为了网络传输 ... -
java SPI
2014-11-19 17:30 663Java的SPI http://singleant.iteye ... -
hadoop
2014-10-15 17:09 1201hadoop官方网站: http://hadoop.apach ... -
JMX
2013-07-26 11:06 654http://docs.oracle.com/javase/7 ... -
分布式事务
2013-07-17 13:57 1766JTA 与 JTS 区别 一. 链 ... -
AJAX
2013-07-07 10:08 998一. AJAX 注意事项 (1)XHR不会修改浏览器历史栈,即 ... -
相等测试equals
2013-06-24 10:29 766Object类是Java中所有类的 ... -
随记小知识点
2013-06-21 10:44 8131. 字符串 从概念上讲,java字条串就是Unicode字符 ... -
Memcache
2013-02-16 17:36 753Memcache windows http://www.cn ... -
MQ(一) rabbitmq
2012-07-23 12:20 21587rabbit mq 与JMS MQ的消费-生产者模型的一个典型 ...
相关推荐
1. JAR文件包结构 JAR文件的基本结构与ZIP文件类似,它将类文件和其他资源文件组织成一个单一的可下载或存储的单元。每个类文件都按照包的层次结构进行存放。例如,一个名为`com.example.MyClass.class`的类文件会...
制作可执行的JAR文件包及jar命令详解 Java Archives(JAR)文件是一种Java特有的文档格式,类似于ZIP文件,但包含了一个META-INF/MANIFEST.MF文件,该文件是在生成JAR文件时自动创建的。JAR文件可以包含Java类、...
通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件...
jarjar.jar是修改java jar文件包名的工具,可以轻松把jar包的包名修改为你想要的,简单易用。 通过源码来改包名不方便、易出错、修改成本高,有了jarjar.jar,你就可以轻松搞定你的问题了。 重新打包(重命名)的...
JAR文件包及jar命令详解.CHM <br> JAR文件包及jar命令详解 常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样...
struct2.0 jar文件包part5 struct2.0 jar文件包part5 struct2.0 jar文件包part5
这里我们以 gson.jar 为例,在 gson.jar 包目录下新建一个文本文件,名字随意,例如 rule.txt,写入下面的内容。 rule com.google.gson.** com.google.mygson.@1 上面写的就是修改规则,我们将包名中的 gson 修改为...
struct2.0 jar文件包part3 struct2.0 jar文件包part3 struct2.0 jar文件包part3
struct2.0 jar文件包part2 struct2.0 jar文件包part2 struct2.0 jar文件包part2
struct2.0 jar文件包part4 struct2.0 jar文件包part4 struct2.0 jar文件包part4
从java jar文件包中读资源的常用方法--更新
commons-beanutils-1.8.3是配置服务端打开工程所需要的一些相关的jar文件包,分别是:commons-beanutils-1.8.3.jarcommons-collections-3.2.1.jarcommons-lang-2.6.jarcommons-logging-1.2.jarezmorph-1.0.6.jarjson...
SSH框架中Struts2框架所需要的一些jar文件包,这个是目前2019.3最新版本commons-fileupload-1.4.jarcommons-io-2.6.jarcommons-lang3-3.8.1.jarcommons-logging-1.2.jarfreemarker-2.3.28.jarjavassist-3.20.0-GA....
- u 更新一个已存在的JAR文件包,添加文件到包中 可选的参数包括: - v 生成详细报告并打印到标准输出 - f 指定JAR文件名,通常这个参数是必须的 - m 指定需要包含的MANIFEST清单文件 - 0 只存储不压缩,产生较大的...
制作可执行的JAR文件包及jar命令详解zt.doc