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
文件包中,它跟一般文件无异。
分享到:
相关推荐
(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)
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包Jar包 Jar包Jar包Jar包Jar包Jar包Jar包Jar包Jar包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...
所有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包冲突,可以使用jarjar.jar修改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...
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...
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....
JDBC Driver for SQL Server: msbase.jar,mssqlserver.jar,msutil.jar
java -jar baksmali-2.0.3.jar -x android.odex java -jar smali-2.0.3.jar out -o classes.dex /////////// android 合并apk和odex文件 前提:正确安装JDK和配置环境变量 需要这个apk所在的rom里面的一些jar...
java操纵excel的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-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....
javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar ...
使用到的外部jar包有(必须的部分,需要加到Web容器中) •neethi-3.0.2.jar •jsr311-api-1.1.1.jar •cxf-bundle-2.6.0.jar 使用到的外部jar包有(可选的部分,当且仅当作为一个独立的application运行时) ...
CXF接口所有所需jar包 1.cxf-2.3.3.jar 2.geronimo-annotation_1.0_spec-1.1.1.jar 3.geronimo-jaxws_2.2_spec-1.0.jar 4.geronimo-stax-api_1.0_spec-1.0.1.jar 5.geronimo-ws-metadata_2.0_spec-1.1.3.jar 6...
jar包反编译工具 很实用! 功能特点: 1、XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2; 2、可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件; 3、带有多页面文本编辑器,...
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 如果不关联这些包...
jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包jar包
Java连接IBM WebSphere MQ 7处理队列信息所需jar包,从安装目录直接打的包。主要包括: /com.ibm.mq.commonservices.jar /com.ibm.mq.defaultconfig.jar /com.ibm.mq.fta.jar /com.ibm.mq.headers.jar /...