JAR
文件格式以流行的
ZIP
文件格式为基础,用于将许多个文件聚集为一个文件。与
ZIP
文件不同的是,
JAR
文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和
JVM
这样的工具直接使用。在
JAR
中包含特殊的文件,如
manifests
和部署描述符,用来指示工具如何处理特定的
JAR
。
jar
工具在默认情况下压缩文件。未压缩的
JAR
文件一般可以比压缩过的
JAR
文件更快地装载,因为在装载过程中要解压缩文件,但是未压缩的文件在网络上的下载时间可能更长。
大多数
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
文件包中,它跟一般文件无异。
分享到:
相关推荐
java -jar jarjar.jar process rules.txt input.jar output.jar ``` 3. **处理过程**:jarjar工具会读取规则文件,解析其中的规则,然后遍历输入jar包中的每个类,根据规则进行重命名或移动操作。 4. **生成新...
标题中的"msbase.jar,mssqlserver.jar,msutil.jar"是Microsoft SQL Server JDBC驱动程序的主要组成部分。这些Java归档(JAR)文件是用于在Java应用程序中与Microsoft SQL Server数据库进行交互的关键组件。 JDBC...
(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)
《深入解析httpclient.jar及其与code.jar的关联》 在Java开发中,HTTP通信是不可或缺的一部分,而Apache HttpClient库正是Java实现HTTP客户端操作的重要工具。本文将深入探讨httpclient.jar包,以及它与code.jar包...
在Java Web开发中,"standard-1.1.2.jar"和"jstl-1.1.2.jar"是两个非常重要的库文件,它们主要用于处理JSP页面中的标签库。这两个库文件在使用时必须确保版本匹配,因为不同版本之间可能存在兼容性问题,不一致的...
在给定的文件列表中,我们可以看到四个关键的JAR(Java Archive)文件,它们在Java EE应用开发中扮演着重要角色: 1. **javaee.jar**:这是Java EE的API库,包含了Java EE规范定义的所有接口和类。开发者可以通过这...
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`是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...
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...
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...
java操纵excel的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-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-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...
在Java开发领域,尤其是涉及到Web服务和服务器配置时,`activation.jar`、`mail.jar`和`tools.jar`是三个非常关键的库文件。在本篇文章中,我们将深入探讨这三个库文件的作用,以及它们如何在Tomcat服务器和Axis Web...
包含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...