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¶m0=0000536436¶m1=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包