`
yeshaoting
  • 浏览: 670454 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java程序打包成jar文件

阅读更多

① 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,完成打包的工作.

 

注: Calucator源文件来源于网络.

1
3
分享到:
评论
2 楼 yeshaoting 2011-04-28  
sd6733531 写道
我想问一下。当项目使用了一些外部引用的lib文件的时候。
打包成jar经常会碰到ClassNotFoundException
我每次只能这样写:
java -jar -cp lib1.jar;lib2.jar xx.jar
有没有更好的办法?还有,打包后的程序File文件目录默认从哪里开始?


-> 貌似目前没有其他比较好用的方法,看人家开源项目demo也都是这样写的.
可以把外部jar文件放到一个文件夹中,然后将这个文件夹作为-cp的值.

还有,打包后的程序File文件目录默认从哪里开始?
-> 没太理解意思
1 楼 sd6733531 2011-04-28  
我想问一下。当项目使用了一些外部引用的lib文件的时候。
打包成jar经常会碰到ClassNotFoundException
我每次只能这样写:
java -jar -cp lib1.jar;lib2.jar xx.jar
有没有更好的办法?还有,打包后的程序File文件目录默认从哪里开始?

相关推荐

Global site tag (gtag.js) - Google Analytics