Java jar打包成exe应用程序,可在无JDK/JRE环境下运行

Java jar打包成exe应用程序,可在无JDK/JRE环境下运行

参考路径:https://www.jb51.net/article/194317.htm

1.将自己的程序打包成jar包

将自己的程序打包成jar包,java -jar jar包  没有问题之后,将cmd窗口关闭进行后续操作

2.下载安装exe4j和inno setup complier

 exe4j:将jar转换成exe的工具

链接: https://pan.baidu.com/s/1AXaXeawYC0mcDUlSSMGvXw

提取码: smb7

注意:exe4j要用注册码激活,不然会有弹窗

注册码:

A-XVK258563F-1p4lv7mg7sav

A-XVK209982F-1y0i3h4ywx2h1

A-XVK267351F-dpurrhnyarva

inno setup:将jre和exe打包成一个安装程序的工具,

链接: https://pan.baidu.com/s/1DByTUoOBmo8h-n_A2s6jCw

提取码: 9hzj

这两个工具自己安装之后进行使用:

3. 打开安装好的exe4j软件,直接下一步进入界面。

  4. 选择“jar in exe” mode 选项,下一步。

 

  5. 输入名称和输出路径,下一步。

 6. 选择GUI,输入应用名称,设置应用图标,下一步。

  注意:这里选择GUI程序,并且勾选下面的Allow -console

7. 选中“32-bit or 64-bit”,勾选“generate 64-bit executable”,下一步

  注意:因为医院的系统有XP 32位,win7 win8 64位的,所以我是分两次打的exe   一个EMRBrower.exe和EMRBrower32.exe  若是打64位的就勾选,若是打32位的就不用勾选

8. 再VM Parameters输入“ -Dappdir=${EXE4J_EXEDIR} ”,点击绿色+号

 9. 选择jar包路径,自己的jar包,OK。

 10. 选择应用程序的主类(含main方法),下一步。

 注意:这里一定选择第三个JarLauncher,我第一次的时候选择的是最后一个,运行不了报错提示找不类

11. 选择jdk版本。

12. 选中“ Search sequence ”,选中绿色+号添加jre目录。

13. 选择“ Directory ”,目录输入“ .\jre ”,下一步。

14. 选择“ Client hotspot VM ”,下一步。

 15. 一直下一步,等待绿色进度条完成,在输出目录里面多了一个可运行程序

 16. 点击“ Click Here to Start the Application ”即可运行程序

注意:这里最好不要点,因为这个是运行程序,之后全部弄完之后再运行的时候可能端口冲突,导致最后的exe运行不起来

 17. 打开第二个软件:inno setup complier软件,File -> new,下一步,填写配置,应用名称,版本等,下一步。

 18. 默认,下一步。

 19. 选择exe程序,下一步。

注意:这里选择第一个软件exe4j生成的那个exe

 20. 默认,下一步。

21. 继续下一步。

22. 选择语言,下一步。

  23. 选择输出路径,输入应用名称,下一步。

注意:这个应用名称就是发给别人的那个安装的exe了

24. 下一步,完成,先不运行脚本文件。

注意:到这一步一定不要点击ok  点击cancle   先不运行,需要修改脚本文件哦

 25. 添加jre目录。

#define MyJreName "jre"

  31. 在最后一行添加jre目录。

Source: "自己本地JRE路径\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs

比如我的配置是:Source: "D:\software\Java\jdk1.8.0_291\jre\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs

 32. 编译运行,会提示保存当前脚本,随便起个名字,下次还可以继续用

  

  

 保存配置文件,下次直接在配置文件的基础上修改就行了,再生成新的exe

33. 当绿色滚动条结束后,桌面会多了一个demo1.exe文件。

34. 也同时会跳出一个安装的,因为程序帮你自动启动生成的安装程序了,安装就可以了,安装的时候记得勾选创建快捷方式,这个就是最后的程序了,双击运行就可以看到结果了,把demo1.exe文件给别人安装,就都可以看到自己的程序了。

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*重点回顾:

1、关于调用电子病历EMR.exe,jar包对应的这个小程序是这样写的:

@RequestMapping("/EMR")
public void EMR(HttpServletRequest request)throws Exception
{
System.out.println("EMR........");
String url = request.getParameter("url");
String param0 = request.getParameter("param0");
String param1 = request.getParameter("param1");
String[] cmd = new String[]{url,param0,param1};
final Process proc = getRuntime().exec(cmd);
System.out.println(proc);
}

写了一个HTTP Web接口,程序运行起来想要调用电子病历调阅路径就是:
http://localhost:9998/EMR?url=D:/extraExePacs/EMR/EMRBROWSER.EXE&param0=0000536436&param1=00220328001
在浏览器上面访问直接可以弹出电子病历调阅的窗口哦
或者前端直接ajax请求

   $.ajax({
    url:"http://localhost:9998/EMR",
    method:'get',
    data:{url:"D:\\EMR\\EMRBROWSER.EXE",param0:rcode,param1:zhuyuanId}
  })

2、解决XP系统32位 安装不了EMRBrower.exe的问题

因为医院的好多电脑是XP系统的,一开始打了一个EMRBrower.exe,在XP上面运行不了

所以这个需要发一个32位的EMRBrower.exe,这个时候我去用exe4j打包运行发现报JAVA_HOME 32位指定错误,所以

首先需要在自己的电脑上安装32位jdk   oracle上面下载太慢,只有随便找的一个  解压后是一个JDK1.8的文件夹   修改环境变量 JAVA_HOME为这个D:\software\Java\JDK1.8   然后cmd运行 java -version  发现还是64位的没有换,神奇,百度了一下说:

那么我需要把Path最前面的C:\ProgramData\Oracle\Java\javapath;删除

这样才能对JAVA_HOME修改来切换需要的jdk环境。

这段是我复制过来的,找到PATH,把“C:\ProgramData\Oracle\Java\javapath;”删掉,友情提醒,最好先把整个path内容COPY一份,免得手抖删错了。

删除之后,听说会出现如下错误(但是我没有出现):

 之后就替换成功了

然后就去程序中把jdk换掉,反正不知道有没有用处,反正是我的电脑环境是换成了jdk1.8 32位的了

 之后点击ok  就去运行程序,运行成功了,之后又去maven clean   maven package   打包   发现Console控制台还是jdk1.8 64位的,不管了,之后就打了一个包,再用上面的步骤生成了一个EMRBrower32.exe包

再用第二个工具打包的时候有遇到了问题,一直提示EMRBrower32.exe程序被占用,我就把EMRBrower32.exe直接粘贴出来不在原来的文件夹中,重新用InnoSetup重新打包 ,之后就成功了,哈哈,之后将重命名后的EMRBrower32.exe发送给医院现场同事,在XP系统上面可以安装成功了,也可以调用电子病历调阅了

4、打包的EMRBrower.exe文件 安装之后  在桌面生成快捷方式,需要将这个设置为开机启动,将exe程序的快捷方式放到C:\Users\Lenovo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup   启动项文件夹中

 

医院电脑启动后就会执行这个,之后就可以电子病历调阅了

5、解决打的exe包安装之后提示没有JVM环境的问题

 

需要重新打包,原因是用第一个exe4j打包的时候这个没有写:-Dappdir=${EXE4J_EXEDIR}

 

 

 或者忘记选择这个Client hotspot VM 

 

 

 或者 在最后一行添加jre目录。
Source: "自己本地JRE路径\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs

\*最好有

最好的办法是再打一遍exe包

posted on 2021-07-16 19:09  yr1126  阅读(4819)  评论(0编辑  收藏  举报