fbpx
维基百科

JAR (文件格式)

软件领域,JAR文件(Java归档,英語:Java ARchive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发Java平台应用软件[3]

Java ARchive
扩展名.jar
互联网媒体类型application/java-archive[1][2]
统一类型标识com.sun.java-archive
开发者網景昇陽電腦甲骨文公司
格式类型文件格式数据压缩
扩展自ZIP

JAR文件是一种归档文件,以ZIP格式构建,以.jar文件扩展名。用户可以使用JDK自带的jar命令创建或提取JAR文件。也可以使用其他zip压缩工具,不过压缩时zip文件头里的条目顺序很重要,因为Manifest文件常需放在首位。JAR文件内的文件名是Unicode文本。[4]

设计

一个JAR文件允许Java运行时高效地部署一组类和它们相关的资源。JAR文件中的元素可以被压缩,这样一来,在单个请求中下载整个应用程序,使得下载一个JAR文件比对构成一个Java应用的许多未压缩的文件单独下载更方便。包java.util.zip包含读写JAR文件的类。

JAR文件在路径META-INF/MANIFEST.MF下有一个可选的Manifest文件。Manifest文件中的条目定义这个JAR文件如何被使用。例如,类路径条目由其他JAR文件的绝对或相对路径的列表组成,用于指定在加载本JAR文件时同时加载的其他JAR文件。虽然旨在简化JAR的使用,但在实践中证明Manifest文件是非常脆弱的,因为入口点JAR在创建时依赖于所有相关的JAR的确切位置。一旦需要更改版本或库的位置,必需重建Manifest文件。

为了提取JAR文件的内容,用户可以使用任何标准的unzip解压缩软件,或者每个Java虚拟机都带有的jar命令:“jar -xf foo.jar”。

开发者可以对JAR文件进行数字签名。在这种情况下,签名信息成为嵌入的Manifest文件的一部分。JAR本身并没有被签名,而是归档内的每一个文件的校验和连同其名字作为签名,被记录在Manifest文件中。多个实体可能签署一个JAR文件,并在每次签名时改变这个JAR文件,虽然签署文件本身仍然有效。当Java运行时加载签名的JAR文件时,它可以验证签名并拒绝加载签名不匹配的类。Java运行时也支持“密封”的包(Sealed Packages)。类加载器一旦成功装载密封包中的某个类后,其后加载的类必须是由同一实体签名,才被允许加载到同一个包。这可以防止恶意代码被插入到现有的软件包,以至于接触到包范围内的类和数据。

开发者可以对JAR文件进行混淆,这样该JAR文件的用户无法得到关于该JAR文件所包含的代码的太多信息,并且能够压缩文件大小。这在空间受限的嵌入式系统开发中很有用。

可执行JAR文件

一个可执行Java程序以及其使用的文件可以打包在一个JAR文件中。

可执行的JAR文件中的Manifest文件用代码Main-Class: myPrograms.MyClass指定了入口点类,注意要指明该类的路径(-cp参数将被忽略)。有些操作系统可以在点击后直接运行可执行JAR文件。而更典型的调用则是通过命令行执行“java -jar foo.jar”。

在多数平台上可以使用封装器封装可执行JAR文件。例如,对于更喜欢使用Windows EXEMicrosoft Windows用户而言,可以使用工具(如JSmooth英语JSmoothLaunch4J英语Launch4JWinRun4J英语WinRun4JNullsoft脚本安装系统等),将单个JAR文件转换为可执行文件。

Manifest

Java平台中, Manifest文件是JAR归档中所包含的特殊文件。[5][6]Manifest文件被用来定义扩展或档案打包相关数据。Manifest文件是一个元数据文件,它包含了不同部分中的键-值对英语Attribute–value pair数据。如果一个JAR文件被当作可执行文件,则其中的Manifest文件需要指出该程序的主类文件。通常Manifest文件的文件名为MANIFEST.MF

通常Manifest文件都与Java档案相关,其他的情况比较少见。

Apache Ant的Zip/JAR支持

Apache Ant构建工具中有其自己的包——org.apache.tools.zip,用来读写Zip和JAR归档文件,并包括对Unix文件系统的支持。org.apache.tools.zip包发布在Apache软件基金会许可下,并被设计成在Ant之外使用。

相关格式

几种相关的文件格式建立在JAR格式的基础上:

  • WAR (Web应用程序归档,英語:Web application archive),也是一种Java归档,存储XML文件、Java类、JSP和Web应用程序中的其他文件。
  • RAR(资源适配器归档,英語:Resource adapter archive),这里不是指RAR文件格式),也是一种Java归档,存储XML文件、Java类和Java EE连接器架构(JCA)应用中的其他文件。
  • EAR (文件格式)英语EAR (file format) (英語:Enterprise archive),是一种复合式Java归档文件,包含了XML文件、Java类和针对Java EE应用的其他Java归档文件,例如JAR、WAR和RAR。
  • SAR(英語:Service archive),与EAR类似。它提供了service.xml文件和相应的JAR文件。
  • APK (Android应用程序包文件,英語:Android application package)Java归档格式的一个变种,用于Android应用程序。[7]

参见

参考文献

  1. ^ File Extension .JAR Details. [29 November 2012]. (原始内容于2018-07-18). 
  2. ^ MIME : Java Glossary. [29 November 2012]. (原始内容于2019-03-21). 
  3. ^ Java Archive (JAR) Files. [2014-05-10]. (原始内容于2009-08-26). 
  4. ^ . [2014-05-10]. (原始内容存档于2013-01-08). 
  5. ^ Understanding the Manifest. Java.sun.com. 2003-03-21 [2012-07-31]. (原始内容于2012-06-26). 
  6. ^ JAR File Specification. Download.oracle.com. [2012-07-31]. (原始内容于2011-11-02). 
  7. ^ Android Developer's Guide. [2014-05-10]. (原始内容于2017-11-10). 

外部链接

文件格式, 在软件领域, jar文件, java归档, 英語, java, archive, 是一种软件包文件格式, 通常用于聚合大量的java类文件, 相关的元数据和资源, 文本, 图片等, 文件到一个文件, 以便分发java平台应用软件或库, java, archive扩展名, 互联网, 媒体类型application, java, archive, cite, class, reference, href, cite, note, cite, class, reference, href, cite, not. 在软件领域 JAR文件 Java归档 英語 Java ARchive 是一种软件包文件格式 通常用于聚合大量的Java类文件 相关的元数据和资源 文本 图片等 文件到一个文件 以便分发Java平台应用软件或库 3 Java ARchive扩展名 tt jar tt 互联网 媒体类型application java archive sup id cite ref 1 class reference a href cite note 1 1 a sup sup id cite ref 2 class reference a href cite note 2 2 a sup 统一类型标识com sun java archive开发者網景 昇陽電腦 甲骨文公司格式类型文件格式 数据压缩扩展自ZIPJAR文件是一种归档文件 以ZIP格式构建 以 jar为文件扩展名 用户可以使用JDK自带的jar命令创建或提取JAR文件 也可以使用其他zip压缩工具 不过压缩时zip文件头里的条目顺序很重要 因为Manifest文件常需放在首位 JAR文件内的文件名是Unicode文本 4 目录 1 设计 1 1 可执行JAR文件 2 Manifest 3 Apache Ant的Zip JAR支持 4 相关格式 5 参见 6 参考文献 7 外部链接设计 编辑一个JAR文件允许Java运行时高效地部署一组类和它们相关的资源 JAR文件中的元素可以被压缩 这样一来 在单个请求中下载整个应用程序 使得下载一个JAR文件比对构成一个Java应用的许多未压缩的文件单独下载更方便 包java util zip包含读写JAR文件的类 JAR文件在路径META INF MANIFEST MF下有一个可选的Manifest文件 Manifest文件中的条目定义这个JAR文件如何被使用 例如 类路径条目由其他JAR文件的绝对或相对路径的列表组成 用于指定在加载本JAR文件时同时加载的其他JAR文件 虽然旨在简化JAR的使用 但在实践中证明Manifest文件是非常脆弱的 因为入口点JAR在创建时依赖于所有相关的JAR的确切位置 一旦需要更改版本或库的位置 必需重建Manifest文件 为了提取JAR文件的内容 用户可以使用任何标准的unzip解压缩软件 或者每个Java虚拟机都带有的jar命令 jar xf foo jar 开发者可以对JAR文件进行数字签名 在这种情况下 签名信息成为嵌入的Manifest文件的一部分 JAR本身并没有被签名 而是归档内的每一个文件的校验和连同其名字作为签名 被记录在Manifest文件中 多个实体可能签署一个JAR文件 并在每次签名时改变这个JAR文件 虽然签署文件本身仍然有效 当Java运行时加载签名的JAR文件时 它可以验证签名并拒绝加载签名不匹配的类 Java运行时也支持 密封 的包 Sealed Packages 类加载器一旦成功装载密封包中的某个类后 其后加载的类必须是由同一实体签名 才被允许加载到同一个包 这可以防止恶意代码被插入到现有的软件包 以至于接触到包范围内的类和数据 开发者可以对JAR文件进行混淆 这样该JAR文件的用户无法得到关于该JAR文件所包含的代码的太多信息 并且能够压缩文件大小 这在空间受限的嵌入式系统开发中很有用 可执行JAR文件 编辑 一个可执行Java程序以及其使用的库文件可以打包在一个JAR文件中 可执行的JAR文件中的Manifest文件用代码Main Class myPrograms MyClass指定了入口点类 注意要指明该类的路径 cp参数将被忽略 有些操作系统可以在点击后直接运行可执行JAR文件 而更典型的调用则是通过命令行执行 java jar foo jar 在多数平台上可以使用封装器封装可执行JAR文件 例如 对于更喜欢使用Windows EXE的Microsoft Windows用户而言 可以使用工具 如JSmooth 英语 JSmooth Launch4J 英语 Launch4J WinRun4J 英语 WinRun4J Nullsoft脚本安装系统等 将单个JAR文件转换为可执行文件 Manifest 编辑主条目 Manifest文件 在Java平台中 Manifest文件是JAR归档中所包含的特殊文件 5 6 Manifest文件被用来定义扩展或档案打包相关数据 Manifest文件是一个元数据文件 它包含了不同部分中的键 值对 英语 Attribute value pair 数据 如果一个JAR文件被当作可执行文件 则其中的Manifest文件需要指出该程序的主类文件 通常Manifest文件的文件名为MANIFEST MF 通常Manifest文件都与Java档案相关 其他的情况比较少见 Apache Ant的Zip JAR支持 编辑在Apache Ant构建工具中有其自己的包 org apache tools zip 用来读写Zip和JAR归档文件 并包括对Unix文件系统的支持 org apache tools zip包发布在Apache软件基金会许可下 并被设计成在Ant之外使用 相关格式 编辑几种相关的文件格式建立在JAR格式的基础上 WAR Web应用程序归档 英語 Web application archive 也是一种Java归档 存储XML文件 Java类 JSP和Web应用程序中的其他文件 RAR 资源适配器归档 英語 Resource adapter archive 这里不是指RAR文件格式 也是一种Java归档 存储XML文件 Java类和Java EE连接器架构 JCA 应用中的其他文件 EAR 文件格式 英语 EAR file format 英語 Enterprise archive 是一种复合式Java归档文件 包含了XML文件 Java类和针对Java EE应用的其他Java归档文件 例如JAR WAR和RAR SAR 英語 Service archive 与EAR类似 它提供了service xml文件和相应的JAR文件 APK Android应用程序包文件 英語 Android application package Java归档格式的一个变种 用于Android应用程序 7 参见 编辑 Java主题 JAR hell Open Packaging Conventions Java应用程序描述符 英语 JAD file format 参考文献 编辑 File Extension JAR Details 29 November 2012 原始内容存档于2018 07 18 MIME Java Glossary 29 November 2012 原始内容存档于2019 03 21 Java Archive JAR Files 2014 05 10 原始内容存档于2009 08 26 存档副本 2014 05 10 原始内容存档于2013 01 08 Understanding the Manifest Java sun com 2003 03 21 2012 07 31 原始内容存档于2012 06 26 JAR File Specification Download oracle com 2012 07 31 原始内容存档于2011 11 02 Android Developer s Guide 2014 05 10 原始内容存档于2017 11 10 外部链接 编辑JAR文件概览 页面存档备份 存于互联网档案馆 JAR文件定义 页面存档备份 存于互联网档案馆 JAR文件的初始定义 页面存档备份 存于互联网档案馆 IBM developmentWorks JAR文件揭密 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title JAR 文件格式 amp oldid 72740604, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。