java打包成exe和可移植

  问题与思路

  大家也许会遇到这样的情况,自己辛辛苦苦的写的java程序,却在别人的电脑上无法运行,这里面可能有这么几个原因:

  • 自己的程序依赖外部jar包
  • 自己程序打成jar包以后,无法显示图片
  • 对方电脑没有java环境

  可是java不是具有很好的可移植性吗?有没有办法做一个可以到处执行的java程序呢?网上有各种各样的方法,但是都比较笼统,或者不能实用于一些情况,这里以一个我自己的实践经历作为例子,供大家参考。

  核心思路如下:

  • 将自己的程序打成jar包
  • 将jar包转成exe文件,同时建立jar包依赖关系,和jre环境相对链接
  • 制作安装程序

  所需软件:

  详细步骤

  1、导出jar包(不做介绍,基本选择默认就足够了,图片和数据库路径问题会在最后讨论),这里建议将导出的.jar文件jre文件(从你安装Java目录下找)、数据库文件引入的jar包exe文件图标(如果这些有的话)都放在一个文件夹下,便于生成安装程序。

  2、生成exe可执行文件

  首先,安装exe4j这个软件,过程嘛,就不说了,一路next就行了,打开后出现如下界面:

  

  2.0)  这里要求License,如果没有的话也是可以,但是每次运行你的程序就会弹出窗口,所以可以从网上搜下License。(转接这里博客上提供,http://wangyali90516.blog.163.com/blog/static/117205101201232641920294/

  2.1)  左侧选择"Project type",有"Regular mode"和"JAR in EXE",区别就是你程序里引入的jar包,要不要一起打包进exe,其都可以,这里我选第一种吧。点击"next"。

  2.2)  出现如下界面

  

  分别是填写应用程序名、打包后exe文件目录、你的jar文件所在目录。填写完成后,点击"next"。

  2.3)  出现如下界面

  

  选择GUI application 和 填写exe文件名、图标(可选)。

  2.4)  添加你的jar包,和你程序所引入的jar包,并且在下方填写你程序的入口,点击"next"。

  

  2.5)  完成后,填写你所需java环境范围,选择Advanced Options,再选择search sequence:

  

  2.6)  删除默认出现的3个,再选择你的安装文件里的jre文件夹:

  

  2.7)  剩下的几乎一路默认即可

  

  2.8)  点击测试一下,你的程序能不能运行,如果出了问题,可以查看目录下的error.log文件。

  3、生成安装文件

  这里采用inno setup,主要是这个软件比较“傻瓜化”,当然好用的软件不只一款。

  3.1)   这个软件安装也是一路Next,运行后,出现如下,选择,点击ok。

  

  3.2)  出现如下,点击next,

  

  

  3.3)  再点next.

  3.4)  选择exe文件,和程序运行所需文件,可以将直接放在同一个文件夹里exe、jre、图标、数据库文件等都加进来。

  

  注意:直接将整个文件夹加进来即可

  3.5)  剩下我的就不罗嗦了吧,大家根据自己的需求弄即可。

  注意事项

  如果你的java程序包含了图片,那就要考虑路径的问题。我这里采用相对路径,示例代码如下:

  

new ImageIcon(getClass().getResource("/Image/首页.jpg"))

  其中Image是我工程里一个文件夹,在打包时,选择

  如果你的java程序里包含了数据库连接(我这里使用的是access数据库),也建议采用相对路径。这样,只需将数据库文件Psychologp.mdb放在jar文件的同一目录下即可。

1 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2 DriverManager.getConnection("jdbc:odbc:data","","");
3 String path = System.getProperty("user.dir");
4 String DBConnstr = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"/Psychology.mdb";
5 Connection con = DriverManager.getConnection(DBConnstr);
6 Statement stmn =con.createStatement();    
posted @ 2014-09-29 19:11  coolAlan  阅读(736)  评论(1编辑  收藏  举报