J a v a程序完成以后,对于W i n d o w s操作系统,习惯总是想双击某个e x e文件就可以直接运行程序,现我将一步一步的实现该过程.最终结果是:不用安装J R E环境,不用安装数据库,直接双击一个e x e 文件,就可以运行程序.下面我将以我最近写的一个程序作例子,进行该打包过程.该程序是使用了:H i b e r n a t e,S p r i n g,D e r b y的J a v a G U I.(J D K 需要1.6版本,因该版本才有D e r b y),我使用的是E c l i p s e进行开发.第一步:完成J a v a G U I程序在E c l i p s e下,程序能够正常运行.第二步:准备清单文件(M A N I F E S T.M F)方法1:直接拷贝其它能运行的J A R文件中的M A N I F E S T.M F 进行修改方法2:利用I D E工具,如E c l i p s e在生成J A R文件时自动生成M A N I F E S T.M F内容如下:M a n i f e s t-V e r s i o n: 1.0M a i n-C l a s s:m a n a g e r.u i.M a i n F r a m eC l a s s-P a t h: ./l i b/s p r i n g.j a r ./l i b/h i b e r n a t e.j a r ./l i b/d e r b y.j a rS p l a s h S c r e e n-I m a g e r:m a n a g e r/r e s o u r c e s/i m a g e s/s p l a s h.j p g说明:M a n i f e s t-V e r s i o n-指定清单文件的版本号M a i n-C l a s s-指定程序运行的入口类。
注意:类名后不要加c l a s s扩展名C l a s s-P a t h-指定支持库的路径。
“.”指程序运行目录,即导出的J A R包所在目录。
程序运行时依据C l a s s-P a t h项的设置路径来查找支持库。
每一个支持库之间用空格隔开。
在这里使用了h i b e r n a t e,s p r i n g,d e r b y.注意:1.如果J a v a应用程序用到了一些E c l i p s e包,那么就必须将这些包也复制到程序运行目录,设置到C l a s s-P a t h,否则程序将无法运行.引用了一些外部组件也需要如此设置,如h i b e r n a t e,s p r i n g,d e r b y.2.除了入口类的包名和类名之外,其他设置项都不分大小写,比如:C l a s s-P a t h写成c l a s s-p a t h或C L A S S-P A T H也可以,s w t.j a r写成S W T.J A R也行。
3.类名后不要加c l a s s扩展名4.每一行的':'后都有一个空格,如C l a s s-P a t h:<空格>./l i b/s p r i n g.j a r5.C l a s s-P a t h中.引入的J A R文件每行不得超过19个,否则会报错.但在让人意外的是每行只有前9个有效,故将所有同类型的J A R文件做成一个J A R文件.如我这里的s p r i n g.j a r,h i b e r n a t e.j a r,d e r b y.j a r都是同类J A R文件的组合.第三步:修改s p r i n g配置文件在s p r i n g的's e s s i o n F a c t o r y' b e a n的配置中则要这样写(与程序中C l a s s P a t h X m l A p p l i c a t i o n C o n t e x t对应)<p r o p e r t y n a m e="m a p p i n g L o c a t i o n s"><l i s t><v a l u e>m a n a g e r/e n t i t y/M y F i l e.h b m.x m l</v a l u e><v a l u e>m a n a g e r/e n t i t y/F i l e T y p e.h b m.x m l</v a l u e>...</l i s t></p r o p e r t y>第四步:使用E c l i p s e生成J A R文件1.右键单击项目名,在弹出菜单中选择“E x p o r t”。
在弹出的如下图所示的对话框中,选择“J A R文件”,单击“N e x t”2.将右边不需要的文件都取消勾选。
在“选择导出目标(S e l e c t t h e e x p o r t d e s t i n a t i o n)”项文本框中设置J A R包的输出路径和包名(可以任意取名)为“D:\m a n a g e r\m a n a g e r.j a r”。
接受其他的默认设置不变,单击“N e x t”。
附注:左边虽然选择了s r c目录,但源文件并不会导出到包中,除非勾选了“导出J a v a源代码文件和资源(E x p o r t j a v a s o u r c e f i l e s a n d r e s o u r c e s)”项。
\3.接受默认设置不变,单击“N e x t”4.这一步较关键。
如下图所示,选择“从工作空间中使用现有清单”项,将创建的清单文件输入,也可以通过旁边的“浏览”按钮来选择清单文件。
输入清单文件后,单击“F i n i s h”,E c l i p s e开始将项目打包。
附:这里也可以选择G e n e r a t e t h e m a n i f e s t f i l e.但生成的清单文件M A I N F E S T.M F需要修改.注意:清单文件M A I N F E S T.M F一定要按第二步那样设置.生成的J A R文件目录如下:第五步:生成运行m a n a g e r.j a r的批处理文件m a n a g e r.b a t(该步可以不要)在m a n a g e r目录下创建一个批处理程序m a n a g e r.b a t(名字任取,扩展名必须是b a t),其内容仅一句语句,如下:j a v a w-j a r m a n a g e r.j a r说明:1.j a v a w对应c:\j d k\j r e\b i n\j a v a w.e x e文件,如果w i n d o w s提示命令未发现,则需要将c:\j d k\j r e\b i n路径加入到w i n d o w s环境变量p a t h中。
2.在运行程序的时候有一个讨厌的黑色命令行窗口,要去掉它,可以将r u n.b a t内容更改如下:“s t a r t j a v a w-j a r m a n a g e r.j a r”,s t a r t是指调用了w i n d o w s的“运行”命令。
3.在后边加一个p a u s e就可以让你看到具体哪里出错了,如:s t a r t j a v a w-j a r m a n a g e r.j a rp a u s e双击m a n a g e r.b a t,就可以运行该J A R文件了.第六步:让电脑不必安装J R E环境,也能运行.通常运行J a v a程序有个前提条件:用户电脑必须先安装J R E环境。
虽然安装J R E环境非常简单,但毕竟多了一步,算是有一点点的瑕疵。
这里给出一个不必让用户安装J R E环境的方法,其实现步骤如下:(1)将原J D K中的“j r e”目录复制到“D:\m a n a g e r\j a v a”目录下(j a v a也可换成其他名称)。
(2)将J D K和J R E从本机卸载掉,这样表示本机没有安装J A V A运行环境。
(3)修改批处理文件m a n a g e r.b a t中的命令为“s t a r tj a v a\j r e\b i n\j a v a w -j a r m a n a g e r.j a r”,仅仅是在j a v a w前加上了一个相对应路径。
双击m a n a g e r.b a t即可在不安装J R E环境的电脑运行此J a v a应用程序。
第七步:抛弃批处理文件(*.b a t),生成e x e文件用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。
但习惯就象一种毒药一旦染上就很难摆脱它的影响,W i n d o w s统治下的人们早已经习惯运行扩展名是E X E的程序,用*.b a t他们就会感觉别扭。
我们可以用一个叫J a v a L a u n c h e r的免费小程序来代替批处理文件去运行J a v a程序。
J a v a L a u n c h e r的下载网址是:h t t p://w w w.r o l e m a k e r.d k/n o n R o l e M a k e r/j a v a l a u n c h e r/m a r n e r_j a v a_l a u n c h e r.h t m下载下来的文件是一个名J a v a L a u n c h e r.z i p的压缩包,解压后的目录结构如下所示:J a v a L a u n c h e r.z i p目录结构s o u r c e目录包含了J a v a L a u n c h e r的源程序,是用C语言写的c h a n g e s.t x t是新版的修改说明l a u n c h.e x e是主程序l a u n c h e r.c f g是配置文件r e a d m e.t x t是一些说明和示例我们只需要l a u n c h.e x e、l a u n c h e r.c f g两个文件,将这两个文件复制到打包文件所在的目录。
l a u n c h e r.c f g是一个仅三行内容的文本文件,将它修改如下:..\j a v a\j r e\b i n\j a v a w.e x e-j a r m a n a g e r.j a r第一行设置指向J A R包m a n a g g e r.j a r的目录,由于l a u n c h.e x e和m y s w t.j a r同在一个目录,所以用“.”即当前目录。