以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  java打包-exe文件-最终以setup形式发布的解决之道  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=55382)


--  作者:DMman
--  发布时间:11/15/2007 8:39:00 AM

--  java打包-exe文件-最终以setup形式发布的解决之道


首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了;但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre 设置环境变量 就不雅了。我们需要将jre打包。

这几步操作网上介绍的插件和方法很多,但有的好用有的不好用,而且有的还需要注册。经过尝试比较,在“千里冰封”的博客上得到了很大的帮助。整理一下。使用这几个工具,您也可以顺利的发布您的java程序!

1 打包成双击可执行的jar文件。
推荐插件:fatJar
下载地址 http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924

Eclipse自带的打包方法在打包一些图片等资源时不是很爽。可以使用这个插件。
安装方法解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.24文件夹拷到eclipse安装目录的plugins 下。
用此工具可以方便的将eclipse中的工程打包成jar文件。如果是要打成可执行的jar请注意选取主类。
你的项目=〉Export..=>向导里有fat jar =>...

2 将jar文件转换成exe文件。
推荐工具:exe4j

用exe4j把java打包成exe
http://www.blogjava.net/hadeslee/archive/2007/10/12/152228.html
在我们写程序的时候,有时会有一种需求,那就是希望我们的程序是一个可执行文件,而不是一个jar文件,其实大部份时候,可执行的jar文件都可以满足要求,但是如果我们的程序是需要保护的,那么打包成jar文件就不太安全了,因为jar文件就是一个解压缩文件,一解压就什么都能看到了,当然也可以选择混淆,但是混淆了以后排错就没那么容易了,因为混淆的时候,把一些类的信息都混淆了。如何既保证代码的安全又容易排错呢?那么打包成exe就是一种很好的办法了,其实我今天介绍这个方法并不是希望大家去打包成exe文件,因为exe文件毕竟不是跨平台的,用了exe的格式就失去了java的初衷了。

exe4j可以打包成各种格式的exe,可以把jar打包进exe,也可以引用一个外部的jar文件,还可以打包成windows服务的程序,并且可以设置最低jre的版本,还可以设定启动画面,虽然java6.0已经实现了这一点,但是还是没有exe4j生成的启动画面快。


3 将exe文件并jre打包成安装文件 可以在没有安装java虚拟机的电脑上运行
推荐工具:install4j

Install4j介绍
http://www.blogjava.net/hadeslee/archive/2007/10/15/152855.html
install4j是一个功能强大的,多平台Java安装文件生成工具,用于生成Java应用程序本地化的安装及应用程序发布。 install4j 的优异性在于它易于使用,紧密的集成到目标平台,以及灵活的JRE 管理与部署选项。

创建发布树
install4j的图形用户界面允许你:

    * 完全自定义发布树
      在发布树的每一个目录中,你能设置整个目录内容或是磁盘上任何目录的单个文件。定义的视图与结果视图让你能完全控制安装程序将发布的文件。
       
    * 处理特定平台的差异
      install4j提供方便的“包含/排除”机制,使其适应平台方式来进行发布。
       
    * 针对Unix, Linux 及Mac OS X所定义的文件权限
      对发布树的每一个元素,当其安装在类似于Unix这样的平台上时,你能自定义用户访问的权限。
       
    * 定义优良的卸载策略
      对发布树的每一个元素,你能决定在卸载时是否删除它。
       
    * 定义覆盖策略
      对发布树的每一个元素,你能配置不同的覆盖策略,当安装过程中需要覆盖文件时,这些覆盖策略会指示nstall4j进行相应的操作。
       
    * 定义安装的组件
      你能定义文件及目录的分组,形成分离的安装组件,这样你就可提供给用户来选择只安装一定的组件。

其实一个好的应用如果不太好布署,那么别人也只能对它望而兴叹了,现在有了install4j,很多布署的问题几乎全部解决了.我们可以用 exe4j打包java应用,然后用install4j发布java应用,以前java程序布署难的问题,现在几乎都解决了.install4j不但用于打包很合适,并且它还提供了一组很强大很实用的与平台相关的api.这些对于扩展我们的程序也是有很大的帮助的.

“千里冰封”兄发给了我exe4j和install4j的最新版的破解版,向他表示感谢!有需要的朋友也可以留下email地址,我也会尽快地发给各位:)


--  作者:mieguishen
--  发布时间:11/15/2007 4:08:00 PM

--  
给我发一个,谢谢
ldxiaojiaquan@163.com
--  作者:scut35
--  发布时间:11/17/2007 11:58:00 PM

--  
给我发一个,scut35@163.com
--  作者:xuhui875
--  发布时间:11/24/2007 10:40:00 PM

--  
xuhuizhang875@163.com
我也要一个
--  作者:FAT0708
--  发布时间:11/26/2007 2:54:00 PM

--  
不知道b/s的程序怎么打包和部署,把war打包吗?楼主发我一份,一起研究下。
email:40014629@qq.com
--  作者:DMman
--  发布时间:11/26/2007 3:25:00 PM

--  
以下是引用FAT0708在2007-11-26 14:54:00的发言:
不知道b/s的程序怎么打包和部署,把war打包吗?楼主发我一份,一起研究下。
email:40014629@qq.com


BS的我没有研究过,您研究下吧 有了成果说一声啊 呵呵
--  作者:gogonow
--  发布时间:11/27/2007 10:23:00 AM

--  
一直用jbuilder的打包工具,配合installanywhere,简单,且效果好.
--  作者:gogonow
--  发布时间:11/27/2007 10:25:00 AM

--  
bs的打成war文件,方便远程deploy,web服务器启动后自动解压.
--  作者:菜籽
--  发布时间:11/27/2007 10:36:00 AM

--  
写的挺好,支持一下
--  作者:wang_y_b
--  发布时间:1/24/2008 5:23:00 PM

--  
能否也给我发一个,万分感谢!!!我的邮箱是:wang_y_b@eyou.com
--  作者:DMman
--  发布时间:1/24/2008 9:05:00 PM

--  
以下是引用wang_y_b在2008-1-24 17:23:00的发言:
能否也给我发一个,万分感谢!!!我的邮箱是:wang_y_b@eyou.com


已发送!
--  作者:jsjzzm
--  发布时间:1/24/2008 11:20:00 PM

--  
我也想试试,发我一份吧,谢谢!
zzm163com@163.com
--  作者:pt19780517
--  发布时间:2/17/2008 9:24:00 AM

--  麻烦您
麻烦给我来一个pt19780517@163.com,谢谢了!
--  作者:titansong713
--  发布时间:3/4/2008 8:53:00 AM

--  
titan_song713@163.com
谢谢lz
--  作者:micropuss
--  发布时间:3/10/2008 8:48:00 PM

--  
问一下,如果想把Jar文件打包成exe文件,最终在Windows Mobile 5.0平台上运行,可以吗?如果不可以,请问怎么样才可以,java环境,jmm 或者其他的?
--  作者:titansong713
--  发布时间:3/10/2008 9:02:00 PM

--  
弱弱的问一句,WM5不是可以用JVM来运行jar包么~
--  作者:micropuss
--  发布时间:3/10/2008 9:19:00 PM

--  
以下是引用titansong713在2008-3-10 21:02:00的发言:
弱弱的问一句,WM5不是可以用JVM来运行jar包么~

但是WM5带吗?还是要下载一个版本就可以了??


--  作者:DMman
--  发布时间:3/10/2008 9:47:00 PM

--  
jar文件是跨平台的,exe不是跨平台的。
每一个要运行jar程序的平台都必须安装 该平台相应版本的jre
--  作者:titansong713
--  发布时间:3/11/2008 8:37:00 AM

--  
WM2003到WM6都自带的,在百宝箱里面,以多普达系列为例,无论是哪个版本,都自带jre~
--  作者:micropuss
--  发布时间:3/11/2008 9:14:00 AM

--  
以下是引用titansong713在2008-3-10 21:02:00的发言:
弱弱的问一句,WM5不是可以用JVM来运行jar包么~

找不到一个合适的JVM或者是JRE,我的PDA是HP iPAQ 5965的。有人知道吗??


--  作者:micropuss
--  发布时间:3/11/2008 9:15:00 AM

--  
以下是引用titansong713在2008-3-11 8:37:00的发言:
WM2003到WM6都自带的,在百宝箱里面,以多普达系列为例,无论是哪个版本,都自带jre~

关键我的PDA (HP iPAQ 5965)不带 JRE呀!!你知道哪个JVM或者JRE支持吗!!


--  作者:titansong713
--  发布时间:3/11/2008 11:00:00 AM

--  
我建议你去找一个支持WM5版本的jre吧~去ppc或者pda论坛上面下一个吧~呵呵,PPC没有玩过~飘过~

--  作者:hhyjava
--  发布时间:3/15/2008 9:29:00 PM

--  
好心得,我支持楼主。
--  作者:zhangygood
--  发布时间:5/16/2008 9:04:00 PM

--  
能给我发一个吗?谢谢
zhangy1207@163.com
--  作者:zhangygood
--  发布时间:5/19/2008 9:43:00 AM

--  
非常感谢版主
--  作者:terryqu
--  发布时间:5/22/2008 12:13:00 AM

--  
是否可以也发给我一份 非常感谢 terry-qu@hotmail.com
--  作者:liwenhai
--  发布时间:6/1/2008 9:43:00 AM

--  
也发一份给我吧,853856912@qq.com
--  作者:fdx123
--  发布时间:6/1/2008 4:42:00 PM

--  
发我个 谢谢 fdxfdx123123@sina.com
--  作者:alexfhq
--  发布时间:7/10/2008 9:40:00 AM

--  支持楼主,麻烦也发一份给我, zyh@skybility.com
支持楼主,麻烦也发一份给我, zyh@skybility.com
--  作者:DMman
--  发布时间:7/10/2008 11:03:00 AM

--  
以下是引用alexfhq在2008-7-10 9:40:00的发言:
支持楼主,麻烦也发一份给我, zyh@skybility.com


----------你发送到zyh@skybility.com的邮件由于以下原因被退回 : 邮箱容量满

--  作者:gdsatan
--  发布时间:7/25/2008 3:08:00 PM

--  
我是菜鸟 我也想要一份  谢谢   gdsatan@163.com
--  作者:leon_xp
--  发布时间:8/4/2008 11:29:00 AM

--  
请发一个给我,万分感谢!!! jim.au@qq.com
--  作者:guoxiangfei
--  发布时间:11/20/2009 9:44:00 PM

--  万分感谢
先谢了啊 :guoxiangfei@163.com
--  作者:guoxiangfei
--  发布时间:11/20/2009 9:45:00 PM

--  
guoxiangfei@163.com 谢谢
--  作者:guoxiangfei
--  发布时间:11/20/2009 9:46:00 PM

--  
guoxiangfei@163.com
--  作者:Humphrey
--  发布时间:11/23/2009 9:35:00 PM

--  
看来将Java程序向视窗系统应用程序转换真是个受到广泛关注的问题。
不过我还是质疑进行这样的转换的作用到底有多大。
--  作者:494078416
--  发布时间:5/9/2010 11:34:00 AM

--  
楼主,我也想要一个,一直尝试 把java编译成 本地 可执行文件的方法,楼主的方法部分解决了 我的问题。
--  作者:494078416
--  发布时间:5/9/2010 11:35:00 AM

--  
楼主,我也想要一个,一直尝试 把java编译成 本地 可执行文件的方法,楼主的方法部分解决了 我的问题。我的邮箱是 494078416@qq.com
--  作者:javaada
--  发布时间:5/15/2010 6:45:00 PM

--  
shenzhouhao@yeah.net  给我也发一个,谢谢
--  作者:jinkey
--  发布时间:7/4/2010 6:49:00 PM

--  
能发给我一个吗?我的邮箱是    jinkeyliu@126.com,太感谢你啦
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
156.250ms