dream.in.java

能以不变应万变是聪明人做事的准则。万事从小事做起,积累小成功,问鼎大成功,是成功者的秘诀。

如何制作Java可执行程序以及安装程序

如何制作Java可执行程序以及安装程序http://www.diybl.com/ 2008-11-6  网络 点击:714  [ 评论 ]
文章搜索:     【点击打包该文章】 被过滤广告
【本站开通在线QQ讨论群】

首先我们介绍一下生成 运行Java程序的三种方式-----
Java 生成的jar包执行方式一般有三种:
1直接用系统j2se binnary执行。由于jar包也可以用winrar打开,造成冲突,你可以将文件关联设置一下即可。这样的话jar包和.exe文件并无二致。而且不损失其平台型。
2 编写脚本。在windows下为.bat ,在linux 或者unix下为.sh。其实个人感觉这个更简单。而且很多大程序也是用这种方式运作的。比如tomcat 以及weblogic都是以这种脚本的方式启动。好处是可以设置各种系统环境变量,检测运行的环境,改变启动参数等等。比如在windows下我们只要加一句:start java –jar xxx.jar就可以了。
3 利用各种各种第三方工具将jar包制作成.bin(unix),或者.exe(windows)文件。但这是以失去跨平台特性为条件的。当然好处是带来了更好的用户体验。
第一种只要你安装了j2se就可以
第二种 我们可以举个例子
假设有个allwefantasy.jar的jar包(里面含有manifest文件),于是在相同目录下我建一个allwefantasy.bat(名字可以随意定,如果是在linux下平台就改成sh后缀名)。内容为
start java –jar xxx.jar
。以后双击就可运行。
第三种是我这篇文章的重点。
将 jar包包装成exe可执行文件
其实这种方式在JDK里面就在应用了。不知道你有没有注意到,%JAVA_HOME%\bin里面全是.exe文件,但仔细看看这些文件都只有几个kb而已,这是为什么呢,因为这只是一种wrapper.包装,真正在运行的仍然是jar文件。也可以称作伪exe文件。那么,如何将jar文件制作成可以直接运行的exe文件呢?这里我介绍两款我用过的。NativeJ 以及开源的jsmooth.
我个人比较喜欢用开源的,呵呵那先来介绍一下Jsmooth吧。
图片(2)
使用很简单,在Skeleton选项卡中的第一个下拉框中windowsed wrapper.
图片(4)
接着选择Executable选项卡,第一个空是你要生成的exe文件是叫什么,你自己随意定。第二个空的你想给自己的exe文件弄个什么图标,你可以实现做好一个ico图形文件然后使用。
第三个空就是你jar包所在目录。
图片(6)
在Application选显卡中第一个空粘帖你的 main-class 的全路径。不知道我说清楚了没,也就是你主函数所在目录的包名+主函数名字。比如我要讲的例子中drawsmart.itsv.AppMain。
然后再勾选use an embedded.jar.
最后选择你所需要的jar包就可以了。
最后点击编译按钮就好了。Project –compile—

接着介绍nativeJ,顾名思义,nativej就是本地化java的意思。
这个软件需要购买,不然启动的时候会弹出可恶的框框,跟可恶的是生成的exe。文件在执行的时候还会弹出申明这个程序是由它生成的。。
呵呵 抱怨的话不多讲,做软件的人也不容易。
图片(8)
一开始用的时候也觉得莫名其妙,不得要领,后来琢磨了一下,才闹明白。你事先建立一个目录里面,并且在目录里面建一个空的后缀名为njp文本文件。
然后点击new project wizard,
图片(10)
选择刚才建好的工程文件就可以了。接着就是依次填入一些参数。参数跟Jsmooth差不多,主要有两个,主类的全路径(包名+类名)以及jar包。
最后就能生成我们期待的exe文件了。
图片(12)
这是我生成的文件。
需要注意的是Jsmooth 和nativeJ生成的exe文件还是有所不同的。我不知道设置会不会改变这种不同。
nativeJ中,如上图所示,由于jar并没有将所有的文件都打入包中,比如images.所以生成的exe文件依然是以来jar包以及其他文件的。个人感觉有点像bat文件。
而在jsmooth中,生成了一个exe文件,但是文件却很大,似乎包含了整个jar包以及资源文件,可是却不能单独执行(为什么,我也没弄明白)。
图片(14)
如何为java程序制作安装程序
制作安装程序并不是一项简单的工作。特别对于大型程序来说。你看oracle光安装就的花你半个小时。安装制作程序有很多,大型商业类的有intallAnyWhere 以及installShield .功能超级强大,但毕竟是商业软件,是需要花银子的。此外,因为功能强,学习他的曲线也是比较陡峭的。
这里我还是介绍一个开源的软件。IzPack。你可以到官网去下。
在安装的时候你可以看到他用自己做的安装界面。
图片(16)
安装后必须自己找到他的目录。这里有两点大家可能不习惯,第一,他没有图形界面,第二,他在你给他写好他所需要的install.xml文件时候,是无法运行的。
也许你还不太理解。没关系,我们讲讲他的设计理念。
安装程序无非就几个界面板块,语言选择,如上面的第一副图片,许可申明,如第二副图,安装进程,安装结束界面等。在IzPack中这些叫面板。IzPack就是利用install.xml文件配置这些面板。当然他还有很多内部细节,比如注册表的注册等,当然这是另外一回事了。然后生成一个jar包(又是jar包,为什么不直接生成exe文件呢,呵呵这个我也不知道,你得去问设计的人,呵呵PS:其实还是为了跨平台)。
那么如何写install,xml 文档呢,说明书有一百五十多业,还是自己慢慢看。不过我可以拿一个自己做的范例来看看。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<installation version="1.0">
//info 主要是一些版本 作者信息

<info>
<appname>我的画画本</appname>
<appversion>1.4 beta </appversion>
<authors>
<author name="GuanSheng" email="wgs@superman.org"/>
<author name="HailLIN" email="zhl@hisdomain.com"/>

</authors>
<url>http://www.superman.net/</url>
</info>

//guiprefs主要设置安装界面的大小,以及是否可以改变尺寸
<guiprefs width="640" height="480" resizable="no"/>

//这里很java里面的国际化很像,我没数过,但IzPack支持很多国家的语言,我这里面选了 英文以及中文。注意,他的语言的缩写和java里面不一致,你要参考文档
<locale>
<langpack iso3="eng"/>
<langpack iso3="chn"/>
</locale>


//资源文件爱你,我这里放了许可申明以及阅readme文件

<resources>
<res id="LicencePanel.licence" src="Licence.txt"/>
<res id="InfoPanel.info" src="Readme.txt"/>
</resources>


//这个就是各个板块了 比如开始,安装,申明板块都在这定义了
<panels>
<panel classname="HelloPanel"/>
<panel classname="InfoPanel"/>
<panel classname="LicencePanel"/>
<panel classname="TargetPanel"/>
<panel classname="PacksPanel"/>
<panel classname="InstallPanel"/>
<panel classname="FinishPanel"/>
</panels>


<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<file src="Readme.txt" targetdir="$INSTALL_PATH"/>
<file src="Licence.txt" targetdir="$INSTALL_PATH"/>
<file src="kitty.exe" targetdir="$INSTALL_PATH"/>
<parsable targetfile="$INSTALL_PATH/kitty.exe"/>
//文件复制到安装文件夹里面就靠这个了
</pack>
<pack name="image" required="yes">
<description>The documentation</description>
<file src="images" targetdir="$INSTALL_PATH"/>

</pack>
<pack name="xmlfile" required="yes">
<description>The sources</description>
<file src="xmlfile" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="temp" required="yes">
<description>The sources</description>
<file src="temp" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="drawflow" required="yes">
<description>The sources</description>
<file src="drawflow3_0.jar" targetdir="$INSTALL_PATH"/>
</pack>

<pack name="service" required="yes">
<description>The sources</description>
<file src="service.ico" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="addon" required="yes">
<description>The sources</description>
<file src="add-on" targetdir="$INSTALL_PATH"/>
</pack>
</packs>

</installation>

 


写好这个文件后将它放在你要制作成安装文件的主目录下,然后用compile.bat运行它,就能得到一个jar文件(PS:注意,在cmd 中一定要在install所在目录执行install不然会提示找不到各个文件,我就被他卡在这很多时间)
那么生成一个jar文件有什么用呢,呵呵,别急
看最后一步


将jar包的安装程序转换成exe安装程序
实际上到这一步,就是用jsmooth将jar安装程序wrapper成exe.那么最后就大功告成了。
所以用了三个步骤。Jar 程序--jsmooth---exe程序----IzPack---jar安装程序---jsmooth—exe安装程序。
当然如果你想更专业点,可以用installsheild或者intallanywhere。简单说说这两个软件,图形界面,可操作性相当的好。而且对于学习用来说,他不需要注册码。唯一的缺点是,如果你不注册,你制作的安装程序在安装的时候就会弹出该产品未注册的提示框。

我也是在网上看到很多网友问着一方面的问题却往往得不到好的解答。所以在此总结一下。希望和大家多多交流。

文章出处:http://www.diybl.com/course/3_program/java/javajs/20081013/150469.html

posted on 2009-02-16 12:56 YXY 阅读(329) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: