JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,就是将原先零散的文件压缩成一个文件,主要就是class文件,还有资源文件,比如配置文件、图片等。但是,jar文件本身并不能表达所包含应用程序的标签信息。 Manifest 因此得以出现。
为了要提供存档的标签信息,jar 文件指定了一个特定目录来存放标签信息:META-INF 目录,其中我们来关注该目录中的MANIFEST.MF文件,他就是JAR的manifest文件,他包含了JAR文件的内容描述,并在运行时向JVM提供应用程序的信息,大多数JAR文件含有一个默认生成的manifest 文件,执行JAR命令或使用zip工具,都可以产生它
如果是由jar命令产生的 manifest 文件,形如:
Manifest-Version: 1.0
Created-By:1.4.0-beta
(Sun Microsystems Inc.)
这些信息没甚么用,仅仅告诉我们使用的是1.0的manifest文件,第一行定义manifest的格式,第二行说明使用 SUN 的JDK1.4的jar工具生成该文件,如果manifest文件是由其他 (如ant) 创建的,那将会出现 “Created-By: Ant 1.2” 之类的内容,如果你是自己创建manifest文件,你可以加入自己的一些相关信息. 基础格式 manifest 文件的格式 是很简单的,每一行都是 名-值 对应的:属性名开头,接着是 ":" ,然后是属性值,每行最多72个字符,如果需要增加,你可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。把manifest文件插入JAR文件 使用 m 选项,把指定文件名的manifest文件 传入,例如
jar cvfm myapplication.jar myapplication.mf [-C]classdir
如果你使用ant来创建时,在ant 的build.xml 加入如下条目
<target name="jar">
<jar jarfile ="myapplication.jar"
manifest="myapplication.mf">
<fileset dir="classdir"
includes="**/*.class"/>
</jar>
</target>
运行Java程序
现在我们来体验一下manifest文件的作用,如果现在我们有一个Java 应用程序打包在myapplication.jar中, main class为 com.example.myapp.MyAppMain ,那么我们可以用以下的命令来运行
java -classpath myapplication.jar com.example.myapp.MyAppMain
这显然太麻烦了,现在我们来创建自己的manifest文件,如下:
Manifest-Version: 1.0
Created-By: JDJ example
Main-Class: com.example.myapp.MyAppMain
这样我们就可以使用如下的命令来运行程序了:(明显简单多了,也不会造成无谓的拼写错误)
java -jar myapplication.jar
如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:
Manifest-Version: 1.0
Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jar
Main-Class: src.YourMainClassName
其中的Class-Paht就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。
最后介绍一下使用Eclipse制作jar包的过程吧:
1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;
2. 选择Java/JAR file,Next;
3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;
这里有几个选项:
* Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
* Export all output folders for checked projects 表示导出选中项目的所有文件夹
* Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
* Export refactorings for checked projects 把一些重构的信息文件也包含进去
在Select the export destination中选择导出的jar的路径,Next
4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next
5. 下一个页面里可以对项目做一些配置。
* Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
* Use existing mainfest from workspace。这是可以选择我们自定义的.MF文件,格式如上所写。
* Seal content。要封装整个jar或者指定的包packet
* Main class。这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
最后Finish,搞定。
分享到:
相关推荐
通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件...
Java打包成jar文件,以及将jar文件导出为exe文件方法汇总[汇编].pdf
jar文件如何打开 jar 如何打开jar文件 jar怎么关联到java jar怎么关联到javaw 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...
含有servlet-api.jar和jsp-api.jar文件;解压获得servlet-api.jar和jsp-api.jar文件;需要下载!
使用exe 文件启动jar文件,同时不需要java环境就可以运行java程序的方法 用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。但习惯就象一种毒药一旦染上就很难摆脱它的影响,Windows统治下的人们早已经...
json必须的jar文件 json必须的jar文件json必须的jar文件 json必须的jar文件
jdbc驱动,三个jar文件jdbc驱动,三个jar文件jdbc驱动,三个jar文件jdbc驱动,三个jar文件
如何制作jar文件学习总结如何制作jar文件学习总结如何制作jar文件学习总结
逆向工程文件关键jar文件
读取jar文件源码工具,官方1.4.0版本,都不是自己写的代码,低积分分享
Java 生成Jar文件命令 方便Java文件直接运行
jpa的主要jar文件,开发JPA所依赖的部分jar文件,基于hibernate的jpa。
用来连接sql数据库的jar文件 以及jstl.jar standard.jar用来连接sql2000数据库的jar文件 以及jstl.jar和 standard.jar
JAR文件包,及jar仓储详解+实例,JAR文件包,及jar仓储详解+实例.JAR文件包,及jar仓储详解+实例
apk文件中添加jar文件 ,baksmali,apktool,jar2dex
把压缩文件中的jar文件解压出来放到项目里面就可以了
深入解析jar文件,介绍jar包的产生和使用方法