zoukankan      html  css  js  c++  java
  • 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

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

    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:softwareJavajdk1.8.0_291jre*"; 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:softwareJavaJDK1.8   然后cmd运行 java -version  发现还是64位的没有换,神奇,百度了一下说:

    那么我需要把Path最前面的C:ProgramDataOracleJavajavapath;删除

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

    这段是我复制过来的,找到PATH,把“C:ProgramDataOracleJavajavapath;”删掉,友情提醒,最好先把整个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:UsersLenovoAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup   启动项文件夹中

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

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

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

     

     或者忘记选择这个Client hotspot VM 

     

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

    *最好有

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

  • 相关阅读:
    java学习笔记——基于Robot类的屏幕分享
    Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)
    Java实例练习——基于UDP协议的多客户端通信
    java实例练习——基于TCP/IP协议的多客户端通信
    我个人的Java学习经验(一家之言)
    PHP mac localhost 环境下发送邮件
    php ob_start()、ob_end_flush和ob_end_clean()多级缓冲
    php ob_start()、ob_end_flush和ob_end_clean()多级缓冲
    程序员应该知道的13个设计技巧
    程序员应该知道的13个设计技巧
  • 原文地址:https://www.cnblogs.com/yr1126/p/15021426.html
Copyright © 2011-2022 走看看