`

jar

    博客分类:
  • Java
阅读更多

JAR 文件 ?

JAR 文件格式以流行的 ZIP 文件格式为基础,用于将许多个文件聚集为一个文件。与 ZIP 文件不同的是, JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR

 

jar 工具在默认情况下压缩文件。未压缩的 JAR 文件一般可以比压缩过的 JAR 文件更快地装载,因为在装载过程中要解压缩文件,但是未压缩的文件在网络上的下载时间可能更长。  

META-INF 目录

大多数 JAR 文件包含一个 META-INF 目录,它用于存储包和扩展的配置数据,如安全性和版本信息。 Java 2 平台识别并解释 META-INF 目录中的下述文件和目录,以便配置应用程序、扩展和类装载器:

  • MANIFEST.MF 这个 manifest 文件 定义了与扩展和包相关的数据。
  • INDEX.LIST 这个文件由 jar 工具的新选项 -i 生成,它包含在应用程序或者扩展中定义的包的位置信息。它是 JarIndex 实现的一部分,并由类装载器用于加速类装载过程。
  • xxx .SF 这是 JAR 文件的签名文件。占位符 xxx 标识了签名者。
  • xxx .DSA 与签名文件相关联的签名程序块文件,它存储了用于签名 JAR 文件的公共签名。

MANIFEST.MF 文件几个重要属性

Manifest-Version: 1.0

Main-Class: ui.JFrameMain

Class-Path: jtds-1.2.jar c3p0-0.9.1.2.jar esri_mo20.jar esri_mo20res.jar jsde83_sdk.jar

 

解释一下:

Manifest-Version mf 文件版本号,没什么,只是个版本标记

Main-Class 包含 main 函数的类,程序的入口

Class-Path 用到的一些包,这个很重要,也还好使,只要设置这个,就可以不用把第三方包在 OS 设置什么 classpath

 

要注意的地方:

要点 1 :每行的“ : ( 冒号 ) 用来分隔键值对,冒号后边一定要跟一个空格!

也就是说务必写为 :

Main-Class:( 空格 )YouClassName

Class-Path:( 空格 )Class1.Jar

要点 2 Class-Path 里边的内容用空格分隔而不是逗号或者分号

也就是说务必写成 :

Class-Path:( 空格 )Class1.jar( 空格 )Class2.jar( 空格 )Class3.Jar 切记

要点 3 : 有的文章说 MF 文件每行不能超过七十多的字符,不知是否属实,没试过,但如果在一行多了我们还是采用多行,这样修改起来会方便点,但要注意以下两点:

1. 每行的最后一个 jar 的名称后不容许有空格

    "    lib/b.jar" b.jar 后必须回车结束本行,不能有空格,一个都不能

2. 每行的开头必须有不少于 2 个空格

"    lib/b.jar" b.jar 前必须有不下两个空格  

Jar 工具命令  

jar {ctxu}[vfm0M] [jar- 文件 ] [manifest- 文件 ] [-C 目录 ] 文件名 ...

 

其中 {ctxu} jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:

-c  创建新的 jar 文件包

-t  列出 jar 文件包的内容列表

-x  展开 jar 文件包的指定文件或者所有文件

-u  更新已存在的 jar 文件包 ( 添加文件到 jar 文件包中 )

 

[vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的可选参数

-v  生成详细报告并打印到标准输出

-f  指定 jar 文件名,通常这个参数是必须的

-m  指定需要包含的 MANIFEST 清单文件

-0  只存储,不压缩,这样产生的 jar 文件包会比不用该参数产生的体积大,但速度更快

-M  不产生所有项的清单( MANIFEST 〕文件,此参数会忽略 -m 参数

 

[jar- 文件 ] 即需要生成、查看、更新或者解开的 jar 文件包,它是 -f 参数的附属参数

 

[manifest- 文件 ] MANIFEST 清单文件,它是 -m 参数的附属参数

 

[-C 目录 ] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 jar 文件包的时候可用。  

 

文件名 ... 指定一个文件 / 目录列表,这些文件 / 目录就是要添加到 jar 文件包中的文件 / 目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。

 

下面举一些例子来说明 jar 命令的用法:

 

1) jar cvf test.jar test

该命令没有执行过程的显示,执行结果是在当前目录生成了 test.jar 文件。如果当前目录已经存在 test.jar ,那么该文件将被覆盖。

 

2) jar cvfM test.jar test

该命令与 1) 结果类似,但在生成的 test.jar 中没有包含 META-INF/MANIFEST 文件,打包过程的信息也略有差别

 

3) jar cvfm test.jar manifest.mf test

运行结果与 2) 相似,显示信息也相同,只是生成 jar 包中的 META-INF/MANIFEST 内容不同,是包含了 manifest.mf 的内容

 

4) jar tvf test.jar

test.jar 已经存在的情况下,可以查看 test.jar 中的内容

 

5) jar xvf test.jar

解开 test.jar 到当前目录,解压过程有详细信息显示

 

6) jar uvf test.jar manifest.mf

test.jar 中添加了文件 manifest.mf ,此使用 jar tf 来查看 test.jar 可以发现 test.jar 中比原来多了一个 manifest 。这里顺便提一下,如果使用 -m 参数并指定 manifest.mf 文件,那么 manifest.mf 是作为清单文件 MANIFEST 来使用的,它的内容会被添加到 MANIFEST 中;但是,如果作为一般文件添加到 jar 文件包中,它跟一般文件无异。

分享到:
评论

相关推荐

    jarjar-1.4.jar

    java -jar jarjar.jar process rules.txt input.jar output.jar ``` 3. **处理过程**:jarjar工具会读取规则文件,解析其中的规则,然后遍历输入jar包中的每个类,根据规则进行重命名或移动操作。 4. **生成新...

    msbase.jar,mssqlserver.jar,msutil.jar

    标题中的"msbase.jar,mssqlserver.jar,msutil.jar"是Microsoft SQL Server JDBC驱动程序的主要组成部分。这些Java归档(JAR)文件是用于在Java应用程序中与Microsoft SQL Server数据库进行交互的关键组件。 JDBC...

    jstl1.1.jar和standard1.1.jar

    (另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

    httpclient.jar包下载

    《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...

    standard-1.1.2.jar和jstl-1.1.2.jar

    在Java Web开发中,"standard-1.1.2.jar"和"jstl-1.1.2.jar"是两个非常重要的库文件,它们主要用于处理JSP页面中的标签库。这两个库文件在使用时必须确保版本匹配,因为不同版本之间可能存在兼容性问题,不一致的...

    javaee.jar,jsf-api.jar,jsf-impl.jar,jstl-1.2.jar

    在给定的文件列表中,我们可以看到四个关键的JAR(Java Archive)文件,它们在Java EE应用开发中扮演着重要角色: 1. **javaee.jar**:这是Java EE的API库,包含了Java EE规范定义的所有接口和类。开发者可以通过这...

    jstl-1.2.1 jar

    jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...

    jstl.jar和standard.jar下载

    而`jstl.jar`和`standard.jar`是JSP开发中两个重要的库文件,主要用于提供JSTL(JavaServer Pages Standard Tag Library)标准标签库的支持。 JSTL是由Apache软件基金会的Tomcat项目开发的,它为JSP提供了一套标准...

    各种你需要的JAR包

    所有jar包集全,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR...

    axis2所有的jar

    axiom-api-1.2.12.jar, axiom-impl-1.2.12.jar, axis.jar, axis2-adb-1.6.2.jar, axis2-kernel-1.6.2.jar, axis2-transport-http-1.6.1.jar, axis2-transport-local-1.6.1.jar, commons-codec-...

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    spring3.1 官方全部jar包

    spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....

    jstl-1.2.jar免费下载

    jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2...

    java操纵excel的jar包(jxl.jar包 源码)

    java操纵excel的jar包

    spring3.0.5 所有jar文件

    包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...

    json所有的jar包下载

    json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar commons-collections-3.2.1.jar ezmorph-1.0.3.jar 如果不关联这些包,则会...

    jetty相关的全部jar包

    jetty-security-9.4.8.v20171121.jar,jetty-io-9.4.8.v20171121.jar,jetty-continuation-9.4.8.v20171121.jar,jetty-client-9.4.8.v20171121.jar,jetty-jmx-9.4.8.v20171121.jar,jetty-plus-9.4.8.v20171121....

    mysql57驱动jar包

    mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57...

    activation.jar和mail.jar和tools.jar

    在Java开发领域,尤其是涉及到Web服务和服务器配置时,`activation.jar`、`mail.jar`和`tools.jar`是三个非常关键的库文件。在本篇文章中,我们将深入探讨这三个库文件的作用,以及它们如何在Tomcat服务器和Axis Web...

    hadoop-2.10.0jar.zip

    包含hadoop平台Java开发的所有所需jar包,例如activation-1.1.jar apacheds-i18n-2.0.0-M15.jar apacheds-kerberos-codec-2.0.0-M15.jar api-asn1-api-1.0.0-M20.jar api-util-1.0.0-M20.jar asm-3.2.jar avro-1.7.7...

Global site tag (gtag.js) - Google Analytics