Re: [問題] 在沒安裝jdk的電腦跑jar
包成runnable jar有個問題就是在沒有安裝jdk的電腦跑不了
我自己的做法是把包好的jar變成exe檔
然後連jre一起包給對方,檔案會因為jre變得很大,但可以免除叫對方安裝jdk的問題
我使用的是exe4j這套軟體
非免費軟體,但有試用版 .也有暗黑版
做法:安裝完後執行
1.welcome 第一次執行選擇next就好
2.project type 請事先先用eclipse把java專案包成jar檔 不是runnable jar
選第"jar in exe"mode
3.application info 第一欄隨便打 第二欄選擇你輸出exe檔的儲存位置
4.executable info 如果是console 選console就好 有用到gui就選gui
executable name是你輸出成exe檔的名稱
icon是你輸出的exe顯示的icon 其他不用動
5.java invocation class path先按右邊的+讀取你包好的jar檔
然後在main class選擇你jar中的main class
6.jre minimum 和 maximum是你的java程式需求的jre版本號,如果你最少要1.7才能跑
在minimum就輸入1.7 maximum可打可不打
之後選advanced options→search sequence
先把search sequence中的內容清空 並在jar檔所在的資料夾下創建"jre7"資料夾
這個資料夾名稱取決於你要求最低版本的jre,如果是1.6,就打"jre6"
然後回到exe4j,按右邊的+,並選擇你剛剛創建的jre資料夾位置
應該會看到在search sequence多了一個 "Directory .\jre7"
請確認這個路徑是 .\ 開頭
確認完後按next 在preferred vm選擇client hotspot vm
7.8.9都一直按next就好 最後就會輸出exe
10.整個執行完後選擇finish會問你要不要儲存這個exe4j專案,如果需要多次修改的情況
可以把exe4j專案儲存,之後再執行exe4j時就可以在1.的時候選擇open讀取專案了
最後一步是請將位於你C:\Program\java的jre資料夾複製到exe檔的所在資料夾
我自己複製時是使用32bit版本的jre才可以正確執行
接下來就是依照你的程式需求對jre進行瘦身,把裡面不需要的jar刪掉
如果不確定哪個jar不需要,只要刪掉後仍然可以正確啟動程式就表示你的程式不需要
雖然最後你這個程式仍然會很龐大(約75~100mb)
但某方面來說,可以不用特地教對方安裝jre,尤其是大量發布時
這是我把java程式發給沒安裝jdk的人的做法
※ 引述《r801129 (阿嘎)》之銘言:
: 本身我的電腦有安裝jdk, 今天幫朋友寫一支JAVA程式
: 我用eclipse包成runnable jar file, 在我的電腦可以跑
: 傳給他跑時發現不能執行, 自己google很多資料, 用了很多方法
: 例如: 轉成exe, 更改MANIFEST.MF 還是不能 最後請我朋友安裝jdk後就能執行了
: 後來我又用一個方法: 把jdk跟jar放在一起, 寫了一個startup.bat去執行
: 我朋友電腦顯示 "不是正確的win32應用程式"
: 請問有什麼辦法可以讓jar在沒有安裝jdk的環境下執行?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.163.154.198
→
07/28 21:41, , 1F
07/28 21:41, 1F
→
07/28 21:45, , 2F
07/28 21:45, 2F
→
07/28 21:54, , 3F
07/28 21:54, 3F
→
07/28 21:57, , 4F
07/28 21:57, 4F
→
07/28 21:59, , 5F
07/28 21:59, 5F
推
07/29 00:00, , 6F
07/29 00:00, 6F
推
07/29 00:03, , 7F
07/29 00:03, 7F
→
07/29 00:05, , 8F
07/29 00:05, 8F
推
07/29 00:21, , 9F
07/29 00:21, 9F
推
07/29 00:29, , 10F
07/29 00:29, 10F
→
07/29 00:31, , 11F
07/29 00:31, 11F
→
07/29 00:32, , 12F
07/29 00:32, 12F
→
07/29 01:17, , 13F
07/29 01:17, 13F
推
07/31 15:43, , 14F
07/31 15:43, 14F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):