【Java精品源码栏目提醒】:网学会员鉴于大家对Java精品源码十分关注,论文会员在此为大家搜集整理了“图解JAVA生成EXE程序 - 电子电信”一文,供大家参考学习
图解
JAVA 生成 EXE 程序背景 一直用 C、Delphi、VC 等写程序,最近项目要求使用
JAVA 写桌面程序,印象中
JAVA适合写 WEB 程序,但是写桌面程序好像有点勉强,实际使用下来,感觉语言挺好用的和 VC类似,程序结构也和 C很像,但是写个界面程序不太灵活,更不能接受的是,最后输出的是一堆的 Class 文件,网上有人说在 DOS CMD 切换到当前目录,
JAVA 运行含主程序的类,这在 C、Delphi 程序员眼里,简直是半成品啊! 经过摸索最后能生成 JAR 包,如果安装了 JRE 是可以直接运行了,还可以做成 BAT 程序也可以直接运行(但是有 DOS 的黑框),能不能直接生成 EXE 呢? 这需要打包程序来实现,经过测试,试过好几种,包括 Jsmooth、
Java2exe、Exe4j 等,最后还是觉得 Exe4j 好用,过程记录如下,供参考。
详述步骤1. welcome-打开 exe4j 如果你有保存过的项目打包配置文件,那么点open 打开即可。
如果没有点next.2. Project type-选择打包方式 由于我们讲的是打包 jar 生成 exe,所以选“jar in exe”mode这种方式可以把一个
java 应用程序打包成一个 exe 文件,但是不能将除 jar 以外的附加文件打包进去。
然 后next3. Application info-配置生成的应用程序的信息设置你的应用程序的名称和将要生成的可执行文件的输出文件夹。
然后next.4. Executable info -配置可执行文件的参数 type 项根据你的程序的类型确定,本例为 GUI 程序接下来是文件名、可执行文件的图标、是否只允许同时刻只能运行一个应用程序、当主线程有误时是否抛出异常、更改工作目录(相对于可执行文件)。
然后点advanced optionsversion info5. version info-设置版本信息6.
java invocation-配置运行环境 先配置 class path,将此项内原有的配置全部删除,然后点“+”找到你生成的 jar 文件, 然后在上边的 general 中点浏览按钮,exe4j 会自动找到你应用程序的入口-main class。
在下边的 advanced options 中选 native libraries 设置,此功能是添加你程序用到的 外部 jar 包文件,这个我一直没用过,因为我做什么事都喜欢集中,所以在程序中用到 的所有外部包全整合到 jdk/jre 里了,这样在给客户安装程序时只要把程序直接给他考 过去就可以用了,不用再安装其它东西。
7. jre-配置 jre 在这里配置你的 jre 版本类型然后再看advanced optionsearch sequence 在这里来配置你运行程序所需的 jre/jdk 的位置如果你只是打包后本机运行直接指定 到你本机的 jre/jdk 目录即可如果你打包后的程序要在别的客户机上运行而该机又没 装 jdk这时我们就要想另一种方法了。
从客户的角度讲拿到手的软件在安装过程中应 尽可能少的给客户带来繁琐的安装事项,最好只点一下鼠标就能自动安装。
因此,我们 要让用户省去安装 jdk 的麻烦。
要解决这个问题,我们可以把安装好的 jdk 复本放置在 最终产品的根目录下,然后在上图中添加这个 jdk 复本为程序的运行环境 search registty 可以扫描已经安装的 jdk/jre,我们选择 directory为程序指定一个 jdk 目录,只需定位到 jdk 根目录即可,如上图。
然后next 这里要说明一点,用 eclipse 开发的程序只要一个 jre 就行了,jdk 不用的,所以我是 把 jre 打包进 exe 运行环境的,这样的话在
java version 下边的那个允许使用 jre beta 版的选项就要选中了。
8. preferred vm-选择虚拟机 这个根据具体情况选择,本例为 client. 然后next9. splash screen -预载窗体 在这里可以设置你的预载窗体界面,不过好像只认 gif 类型的图片,status line and version line 可以在 position text lines visually 预览界面中调整其显示位置。
然 后next,接下来是选择语言界面,根据自己情况选择。
然后next10. compile executable-编译生成可执行文件 自动跳转至: 在这里可以点击运行生成的可执行文件,也可以将本次配置方案保存起来以备后用。
11 遗留问题 点击生成的 EXE,看到程序可以打开了,生成 EXE 成功了。
可是,仔细用一下发现参数不能保存了!每次程序运行时保存的参数,下次再运行时,没有了!这对桌面程序来说,还是有点不可接受。
如图,做一个获取程序文件夹的功能,发现文件夹是临时的,每次运行文件夹不一样,难怪保存的数据找不到了。
怎么解决呢,我们看到这个程序调用了一个 GPRS/CDMA 的 DLL,是上海正伟的一个成熟的 DLL,我们生成的 EXE 是调用这个“zwgprsnw.dll”,这个 GPRS DLL 是和程序放在一起的,既然可以找到 GPRS DLL,那按照道理,是可以找到参数文件的,这个要程序做些测试了。
上一篇:
Java程序员上班那点事儿
下一篇:
扛起年轻化大旗,哈弗F系玩转行业新风潮