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:\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包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM