背景
最近领导要求我搞个exe程序,给安装在门卫室的电脑上用,这个电脑没有安装jdk。
需求
大概需求就是门卫室边上有两个摄像头,通过某种方式会将拍照的的图片放到电脑的某个目录下并按某种规则生成文件名,最终会有很多图片文件。现在需要通过这个exe程序从这些图片里面挑选一些图片,发送到某个程序接口上进行分析,得到结果后,再把结果上报到某个服务上。
写代码
巴拉巴拉一顿操作,把需求的代码写好了。最终的代码结构差不多就这样,没有依赖其他jar,主函数就在Main.java里面
licenseConfig.conf:是程序运行需要读取的配置文件,里面有日志记录地址、服务接口地址等等配置项
pom.xml:就创建项目自动生成的那个空的,只是改了下名字
下载安装exe4j
1.去这儿 https://www.ej-technologies.com/download/exe4j/files 下载软件包
下载exe或者zip都行,zip解压后就能直接用,exe直接一直下一步安装就是。
注意安装路径不要包含中文
需要注意的是,安装路径里面不要包含中文,我开始是放在一个中文的目录下面的,一直打不开,还没任何提示,后面想着重新换个位置就可以了。
2.不会安装的话网上有很多安装教程
打包前准备
- 代码打包成exe
- 需要ico的话准备一个ico文件
- exe4j的许可证密码,非必须,可以填:A-XVK275016F-15wjjcbn4tpj
- 把你的jar整个目录复制到某个地方去(其实不复制也没关系)
我准备了下面这三个东西 :
打包exe
- 双击 bin/exe4j.exe,打开软件
- 下一步
-
-
-
-
点了exit退出后,要弹窗提示你要不要保存配置啥的,直接no就行了,要yes也行,看你。
运行exe
本地运行
双击生成的exe开始本地运行吧。
本地运行大概率是没问题的。
我最开始做的时候就是个main函数运行,所以点了exe啥反应都没有,但是能看到因为程序运行而产生的日志记录,所以虽然看不到,单实际还是在运行的。
后面我就做了个丑陋GUI,所以运行后有个窗口,就能直观的看到了。
在其他有jdk环境下运行
- 开始只发了exe包和相关配置文件给他,点击运行,失败,大概是说没有jdk啥啥的;
- 搜了搜把jre打进exe里面的方法,试了几次,还是不行;
- 把jre这个目录和exe文件一起发给对方,成功运行。
目标环境运行
目标环境是没有安装jdk的
- 经过前面的测试,直接把jre和exe和配置文件一起发过去,
所以最终给到的就是这三个文件:
一个jre运行环境,
一个exe执行文件,
一个conf自定义的配置文件
其他
- 搜索结果说是可以把jre打进exe里面的,应该是可行的,后面有空再研究研究。
- 我上面打的exe相当于一个直接执行的程序,双击就直接运行;我看说把jre打进去的一种方式就是再用工具把jre和exe一起再弄成一个安装程序的exe,这样给别人这个安装程序就好了,没深究,后续…