① DOS下jar命令打包
用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] fil
s ...
选项包括:
-c 创建新的归档文件
-t 列出归档目录
-x 解压缩已归档的指定(或所有)文件
-u 更新现有的归档文件
-v 在标准输出中生成详细输出
-f 指定归档文件名
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储;不使用任何 ZIP 压缩
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含其中的文件
如果有任何目录文件,则对其进行递归处理。
清单文件名、归档文件名和入口点名的指定顺序
与 "m"、"f" 和 "e" 标志的指定顺序相同。
示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:
jar cvf classes.jar Foo.class Bar.class
示例 2:使用现有的清单文件 "mymanifest" 并
将 foo/ 目录中的所有文件归档到 "classes.jar" 中:
jar cvfm classes.jar mymanifest -C foo/ .
示例: 计算器程序打包
1. 自己写一个manifest.mf打包清单
Manifest-Version: 2.0
created-by: jarg
main-class: Calucator
其中, Manifest-Version指明清单版本, created-by指明创建的作者, main-class指明程序运行的主类.
<1> 如果不写Manifest-Version这项, jdk会帮助自动生Manifest-Version: 1.0
<2> 如果不写created-by这项, jdk会帮助自动生成created-By: 1.6.0_22 (Sun Microsystems Inc.)
实际编写清单过程中, 发现对于有些打包方式需要在最后一项后面添加一个回车(没深入了解).
建议: 在manifest.mf末尾添加一个回车.
2. 使用jar命令打包
jar cvfm Calucator.jar manifest.mf *.class
其中, cvfm是jar命令的一些参数.
参数f : 是指定打包后的包名, 如果少了的话, 打包会失败. 由此可以看出jdk在用jar打包时, 没有设置默认打包名.
参数m : 是指定自己写的manifest.mf清单文件, 否则会自动生成不包含main-class的一个默认清单.
显然,参数c 是必不可少的, 参数v 是可有可无的.
② 使用eclipse中export功能
1. 在要打包的项目上右键,选中Export
2. 在弹出的窗口中,Java -> JAR File,然后next
3. 在JAR File Specification窗口中,选好要打包的文件,在JAR File中选好打包位置及包名
4. 二次next后,在JAR Manifest Specification窗口,设置manifest.mf的配置.
如果只是单纯的打包class文件的话,可以不做修改,采用默认的manifest.
如果想要打包生成可执行的文件的话,可以选择Use existing manifest from workspace,定位到自己写的清单文件.
5. 单击Finish,完成打包的工作.
另外,如果在第2步选择Runnable JAR File的话,生成可执行的jar文件会更加方便(不用自己写manifest.mf清单文件).
③ 使用eclipse插件fatjar
下载地址: http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924
下载后将该插件放到eclipse安装目录下plugins文件夹里,之后在eclipse项目右键就能看到Building Fat Jar选项.
1. 在Jar-Name中设置包名
2. 可以选择select manifest file,来定位自己的manfiest.mf文件
3. Main-Class中设置主类(main函数所在的类)
4. Class-Path中设置程序依赖的包,next
5. 在弹出的select files for Fat Jar窗口中添加程序依赖的其他文件
6. 单击Finish,完成打包的工作.