http://www.iteknical.com/convert-jar-to-exe-phase-i-exe4j-tutorial/
在日常开发中,遇到需要将 Java 的 JAR 包转化为可执行文件 EXE 的情况不在少见。一般常见 Java 编写的 Console、AWT、Swing、SWT 等程序。在项目交付时,通常采用 JAR 打包。不过这样会产生几个常见的问题:
这个文章系列主要介绍将将 JAR 转为 EXE 的几种最常用工具。
第一期介绍的工具是 exe4j(http://www.ej-technologies.com/products/exe4j/overview.html),是一个帮助你集成 Java 应用程序到 Windows 操作环境的 Java 可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及 Windows XP 分组的用户友好任务栏里以你的进程名取代 java.exe 的出现,那么 exe4j 可以完成这个工作。exe4j 帮助你以一种安全的方式启动你的 Java 应用程序,显示本地启动画面,检测及发布合适的 JRE 和 JDK,以及进行启动时所发生的错误处理等。
在开始讲两者的使用和对比之前,先准备一个需要转换的 Java 项目。演示以一个新建的 SWT 项目为例:
再新建一个 shell,随便写了一个窗体;
将项目导出为 JAR 包,这里要选“可执行的 JAR 包”,否则导出的 JAR 是没有执行入口的;
在“Lunch configuration”中选择项目的入口类,并自己选择好导出位置;
其中 Library handing 一项要特殊说明一下,此处配置的是第三方 JAR 包的配置方式。其中“Extract required libraries into generated JAR”指的是不对第三方 JAR 包做处理;“Package required libraries into generated JAR”指的是将第三方 JAR 包打包到最终生成 JAR 包中;“Copy required libraries into a sub-folder next to the generated JAR”指的是将第三方 JAR 包复制到和生成的 JAR 同一目录的一个子文件夹中。我们这里使用第三种处理方式。
导出的 JAR 目录结构如下,至此,准备工作就完成了。
首先下载 exe4j,可以从这儿下载:
Windows 32 位:http://pan.baidu.com/share/link?shareid=1922223599&uk=1426189689
Windows 64 位:http://pan.baidu.com/share/link?shareid=1923937617&uk=1426189689
exe4j 还包含 Mac OS 版和 Linux 版,可以从其官网获取:http://www.ej-technologies.com/download/exe4j/files
下载完成后安装,可以使用以下几个序列号注册,用户名和公司名可随便填:
A-XVK258563F-1p4lv7mg7sav A-XVK209982F-1y0i3h4ywx2h1 A-XVK267351F-dpurrhnyarva A-XVK204432F-1kkoilo1jy2h3r A-XVK246130F-1l7msieqiwqnq A-XVK249554F-pllh351kcke50 A-XVK238729F-25yn13iea25i A-XVK222711F-134h5ta8yxbm0 A-XVK275016F-15wjjcbn4tpj A-XVK275016F-15wjjcbn4tpj
注册完成后应是这样:
启动 exe4j:
第一步 Welcome 的 Open和Reopen 是打开过去的配置文件的,第一次使用直接按 Next 跳过。
接着选择工程类型,选择第二个,可以把程序完全编译成 exe 文件;
接着填写应用程序的名字和输出目录;
接着一步是配置 JAR 包运行的参数;
按从上到下的顺序解释。Excutable type 是指你的程序类型,包含 GUI 程序(包含图形界面的),Console application 是控制台程序,Service 指的是后台运行的服务程序;Excutable name 指的是最终的 EXE 的名字。Icon file 可以给你的 EXE 加一个图标;Allow only a single running instance of the application 指的是只允许实例化一个应用;Fail if an exception in the main thread is thrown 指的是 main 抛出异常的时候终止程序;Change working directory to 可以改变工作目录。
Advance 设置里面包括:
Redirection,用来重定向错误文件和输出文件的路径;
Service opition,以服务启动的相关设置;
Version info,软件的版本信息;
32-bit or 64-bit,生成 32 位或者 64 位的 EXE;
Execution level,软件的运行级别;
配置完成后进入 Java invocation;
在 Class path 里面添加生成好的JAR包,点击右边的加号;
添加所有的 JAR 文件至 Class path,包括lib文件夹中的第三方 JAR,完成后如下:
在下面 Main class 中设置好程序的入口和参数:
接着配置好 JRE 的参数:
高级选项里面 Serch sequence 和 Preferred VM 是设置 JRE 的查找顺序,可以用来定义程序使用的非使用者的JRE等设置。
Splash sceen 故名思意就是程序刚开始的闪屏:
Message 中主要包含程序消息、错误信息的国际化和自定义:
万事具备,生成可执行文件:
看到这一步,就说明生成成功了:
运行一下看看效果:
从进程里也可以看出,运行的是 SwtDemo.exe,不再是 javaw.exe 了。