前言:

我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。其实将java程序打包成exe也需要这个可执行jar文件。

准备:

eclipse、exe4j(网上有软件和帐号下载)

第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Main.java是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库

开始打包,Simulate(Java项目)-鼠标右键-Export

弹出窗口,选择“JAR file”,点击“Next”

取消勾选“config”和“lib”目录,以及eclipse生成的项目配置文件“.classpath”和“.project”,点击“Next”

一切默认,点击“Next”

在弹出窗口中,选择我们自己创建的MANIFEST.MF文件,点击“Finish”

我的MANIFEST.MF文件内容为:

Manifest-Version: 1.0
Main-Class: bing.Main
Class-Path: . lib/ojdbc14.jar lib/poi-2.5.1.jar lib/jbcl.jar lib/JTattoo.jar lib/liquidlnf.jar
Created-By: IceWee

通过指定“Main-Class”来达到可执行jar文件的目的。其实我们最终是将项目打包成exe,Class-Path可以不指定,在打包exe的时候还要指定classpath的。

第二步,将项目打包成exe,这里要明确一点,并不是把所有的文件都打包成一个exe,资源文件是不能包进去的,往下看↓

首先,在任意目录创建一个文件夹,最好命名和项目名相同,我在F盘创建了一个“Simulate”文件夹,之后将所有的资源文件以及我们生成的可执行jar文件(我的Simulate.jar)都拷贝到这个文件夹里,config目录和lib目录,如果你怕执行该程序的机器上没安装jre,那么你需要将自己机器上的jre目录也拷贝进来,我安装的jre5,最后的目录结构:

打开exe4j,跳过欢迎,直接点击左侧导航的第二项,因为我们已经提前将java项目打包成可执行jar文件了

exe4j是一款很经典的将Java类文件打包成.exe文件的软件,支持把jar class文件等编译成windows下能够直接运行的exe文件,还可以添加启动等待画面

第一次安装时会出现下面的对话框:



它要求系统有1.5版本以上的JDK,点Download在线下载,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/java.exe就可以进行安装了。

下面就安装过程详细说明一下:

第1步,默认即可。

第2步,如果已经有制作好的jar文件,则下面一个"JAR in EXE"。

在弹出窗口,选择“JAR in EXE mode”,点击“Next”

在新窗口中,为我们的应用取个名称,之后选择exe生成目录(我的F:\Simulate),点击“Next”

为我们要生成的exe取名,如果想生成自定义图标,那么选择你的ico文件,如果你不想在一台电脑上运行多个你的程序,你可以勾选“Allow only a single...”,点击“Next”

下一步最好配置一下32位和64位的版本,

点击绿色“+”,设置程序运行的Class Path

先选择我们自己的可执行jar文件(我的Simulate.jar),点击OK

我们的Simulate.jar就加到Class Path下了

之后点击General中的Main Class选择按钮,在弹出窗口中,exe4j会自动搜索当前Class Path下的全部jar中包含main方法的类,并列出,因为当前我只选择了自己项目的jar,而我的项目中只有Main.jar包含了main方法,所以一目了然,直接选择它点击“OK”,程序入口类就设置完成了

Main Class设置完成后,依次将所有需要的第三方类库加到Class Path下,方法同添加“Simulate.jar”一样,点击“Next”

输入Java最小Jre版本号,即低于这个版本的Jre无法运行该程序,接着点击“Advanced Options”-“Search sequence”,设置一下我们的JRE,之前说过,如果客户机上没装Jre咋办?,没关系我们捆绑一个进去

点击绿色“+”来选择捆绑的JRE位置

在弹出对话框中选择“Directiony”,之后选择JRE的文件夹,注意:这个JRE目录是我们将本机的JRE目录拷贝到当前exe生成目录下的,我的目录是F:\Simulate\jre5,下图程序使用的是相对目录,点击OK,完成JRE的捆绑操作

JRE捆绑完毕,点击“Next”

默认,点击“Next”

默认,点击“Next”

默认,点击“Next”

exe生成中

OK,完成,点击“Exit”即可

看看成果如何吧!

我们的可执行jar以及第三方jar总共还不到5M,可jre5目录就50多M,如果目标机器上有JRE环境就可以把它删掉了,lib目录是第三方jar文件,现已打包到exe中了,所以它也没有存在的理由了,那么最小配置就剩下了“Simulate.exe”和“config”目录了!

转自:http://www.cnblogs.com/icewee/articles/2073203.html

补充两个问题:

  1. 找不到Main class 类?

要把jar文件放到你的目标文件夹中。

2、找不到JVM?

要准i确说明你的JRE版本,如果你是1.7就不要写1.5.还有可能有版本的问题,注意32和64位的选择。

Java程序打包成exe可执行文件的更多相关文章

  1. Java桌面程序打包成exe可执行文件

    前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...

  2. JAVA程序打包成exe文件详细图解

    我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse ...

  3. JAVA程序打包成exe小程序的过程

    编程软件:myeclipse2014 打包exe软件:exe4j 1:在myeclipse2014新建java项目编写程序 2:打包成jar,分两种情况(有无外部依赖包) 无外部依赖包:点击项目--- ...

  4. 使用WinRAR创建可执行程序(例如:Java程序打包 成exe)

    不管你是java.c.还是xx程序,只要打包成可以双击运行/或者命令行运行,都可以用WinRAR软件生成压缩格式的exe文件,目标电脑可以没安装解压软件,依然可以运行解压. 第一步:准备压缩的所有文件 ...

  5. Python 程序打包成 exe 可执行文件

    Python 程序打包工具 Python 是一个脚本语言,被解释器解释执行.它的发布方式: .py 文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装 Python 并且安装依赖 ...

  6. Qt程序打包成exe可执行文件图文教程(图文并茂,且用到了filepack)

    很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题.现在网上大部分软件都要发布自己开发的应用程序,都会打包到exe文件中,待安装完exe文 ...

  7. Qt程序打包成exe可执行文件

    很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题.现在网上大部分软件都要发布自己开发的应用程序,都会打包到exe文件中,待安装完exe文 ...

  8. 使用fat jar和exe4j把java程序打包成exe执行文件---转载的

    java应用编写测试好之后都是jar包或class文件,客户拿到这个东西后一般是不会java开发者那样在命令窗口下面输入运行的.客户要求的就是直接点击应用名称运行.java在方面做得很不友好,开发人员 ...

  9. 将java程序打包成exe文件

    一. 1. 项目右击,导出 jar文件 2. 下一步,选择 3. 完成 二. 1. 下载exe4j,并破解 2. 其他的步骤都好说,我主说这个步骤,一定要讲所有引用的jar包放到里面否则会报找不到文件 ...

随机推荐

  1. linux c编程:进程控制(三)_exec函数

    fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的“副本”,这意味着父子进 ...

  2. Linux内核设计基础(九)之进程管理和调度

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/BlueCloudMatrix/article/details/30799225 在Linux中进程用 ...

  3. Eclipse +Tomcat配置-【菜鸟学JAVA】

    说起来也惭愧,以前用(Unieap)工具搞了一年多的JAVA+Oracle,现在居然在Eclipse中配置tomcat都搞了半天时间,原来一直是做.NET的. 今天开始不再用集成的环境,话不多说,开始 ...

  4. (转)Javascript模块化编程(一):模块的写法

    随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...

  5. 4django模板

    在前面的几节中我们都是用简单的django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容 1.创建一个 zqxt_tmpl 项目,和一个 名称为 ...

  6. JavaWeb:前端开发基础

    JavaWeb:前端开发基础 内联元素和块级元素 说明: 联元素和块级元素都是html中的范畴,块元素和内联元素的主要差异是块元素是从新的一行开始.而内联元素一般显示在一行上.但是可以通过css的di ...

  7. OSI 与 TCP/IP

    OSI参考模型 物理层(Physical Layer) --- 数据表示.物理层规定了激活.维持.关闭通信端点之间的机械特性.电气特性.               功能特性以及过程特性.该层为上层协 ...

  8. 第二章 python中重要的数据结构(下)

    二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. #创建元组 >>> 1,2,3 (1, ...

  9. 也谈设计模式Facade

    门面模式提供一个高层次的接口,使得子系统更容易使用. 子系统与外部系统的通信必须经过一个统一的facade进行处理. 内部系统的交互在facade中进行整合,这样,对于外部系统的使用者就不用关注内部系 ...

  10. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...