java代码打包成jar以及转换为exe
教你如何把java代碼打包成jar文件以及轉換為exe可執行文件
?
1、背景:
?
??? 學習java時,教材中關于如題問題,只有一小節說明,而且要自己寫麻煩的配置文件,最終結果卻只能轉換為jar文件。實在是心有不爽。此篇博客教你如何方便快捷地把java代碼,打包成jar文件以及轉換為exe可執行文件
?
2、前言:
?
??? 我們都知道Java可以將二進制程序打包成可執行jar文件,雙擊這個jar和雙擊exe效果是一樣一樣的,但感覺還是不同。其實將java程序打包成exe也需要這個可執行jar文件。
?
3、準備:
?
? ? ?下載eclipse或Myeclipse以及exe4j下載(這里有幾種版本的exe4j提供下載,總有一款適合你,如果沒有就找度娘咯)。
?
?
4、具體步驟:
?
Step1:將java項目打包成可執行jar文件
?
??? 首先看一下我的java project結構,Main.java是程序入口類,里面有main函數,config目錄是些配置文件,lib是用到的第三方類庫
?
?
開始打包,Simulate(Java項目)-鼠標右鍵-Export
?
?
彈出窗口,選擇“JAR file”,點擊“Next”
?
?
取消勾選“config”和“lib”目錄,以及eclipse生成的項目配置文件“.classpath”和“.project”,點擊“Next”
?
?
一切默認,點擊“Next”
?
?
在彈出窗口中,選擇我們自己創建的MANIFEST.MF文件,點擊“Finish”
?
?
?
我的MANIFEST.MF文件內容為:
?
Manifest-Version: 1.0 Main-Class: bing.Main Class-Path: . lib/ojdbc14.jar lib/poi-2.5.1.jar lib/jbcl.jar lib/JTattoo.jar lib/liquidlnf.jar Created-By: Kun Sun?
通過指定“Main-Class”來達到可執行jar文件的目的。其實我們最終是將項目打包成exe,Class-Path可以不指定,在打包exe的時候還要指定classpath的。
?
Step2:將項目打包成exe
?
????這里要明確一點,并不是把所有的文件都打包成一個exe,資源文件是不能包進去的,往下看↓
首先,在任意目錄創建一個文件夾,最好命名和項目名相同,我在F盤創建了一個“Simulate”文件夾,之后將所有的資源文件以及我們生成的可執行jar文件(我的Simulate.jar)都拷貝到這個文件夾里,config目錄和lib目錄,如果你怕執行該程序的機器上沒安裝jre,那么你需要將自己機器上的jre目錄也拷貝進來,我安裝的jre5,最后的目錄結構:
?
?
打開exe4j,跳過歡迎,直接點擊左側導航的第二項,因為我們已經提前將java項目打包成可執行jar文件了
?
?
在彈出窗口,選擇“JAR in EXE mode”,點擊“Next”
?
?
在新窗口中,為我們的應用取個名稱,之后選擇exe生成目錄(我的F:\Simulate),點擊“Next”
?
?
為我們要生成的exe取名,如果想生成自定義圖標,那么選擇你的ico文件,如果你不想在一臺電腦上運行多個你的程序,你可以勾選“Allow only a single...”,點擊“Next”
?
?
點擊綠色“+”,設置程序運行的Class Path
?
?
先選擇我們自己的可執行jar文件(我的Simulate.jar),點擊OK
?
?
我們的Simulate.jar就加到Class Path下了
?
?
之后點擊General中的Main Class選擇按鈕,在彈出窗口中,exe4j會自動搜索當前Class Path下的全部jar中包含main方法的類,并列出,因為當前我只選擇了自己項目的jar,而我的項目中只有Main.jar包含了main方法,所以一目了然,直接選擇它點擊“OK”,程序入口類就設置完成了
?
?
Main Class設置完成后,依次將所有需要的第三方類庫加到Class Path下,方法同添加“Simulate.jar”一樣,點擊“Next”
?
?
輸入Java最小Jre版本號,即低于這個版本的Jre無法運行該程序,接著點擊“Advanced Options”-“Search sequence”,設置一下我們的JRE,之前說過,如果客戶機上沒裝Jre咋辦?,沒關系我們捆綁一個進去
?
?
點擊綠色“+”來選擇捆綁的JRE位置
?
?
在彈出對話框中選擇“Directiony”,之后選擇JRE的文件夾,注意:這個JRE目錄是我們將本機的JRE目錄拷貝到當前exe生成目錄下的,我的目錄是F:\Simulate\jre5,下圖程序使用的是相對目錄,點擊OK,完成JRE的捆綁操作
?
?
JRE捆綁完畢,點擊“Next”
?
?
默認,點擊“Next”
?
?
默認,點擊“Next”
?
?
默認,點擊“Next”
?
?
exe生成中
?
?
OK,完成,點擊“Exit”即可
?
?
看看成果如何吧!
?
?
??? 我們的可執行jar以及第三方jar總共還不到5M,可jre5目錄就50多M,如果目標機器上有JRE環境就可以把它刪掉了,lib目錄是第三方jar文件,現已打包到exe中了,所以它也沒有存在的理由了,那么最小配置就剩下了“Simulate.exe”和“config”目錄了!
?
?5、備注
?
??? 上述步驟基本上是自己已經嘗試過的步驟,其中有些步驟可以省略,比如說Step1中從java代碼轉換為jar的過程中可以不寫配置文件(MANIFEST.MF文件),系統會自動給出,是不是很方便,。再比如Step2中的綁定jre,可以不綁定。至于其余可以更優化及方便地步驟,讀者可以自己摸索嘗試。
?
?------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------哥哥是分割線---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------?
?
這里轉載網友的一篇exe4j的使用:
?
exe4j是一款很經典的將Java類文件打包成.exe文件的軟件,支持把jar class文件等編譯成windows下能夠直接運行的exe文件,還可以添加啟動等待畫面
第一次安裝時會出現下面的對話框:
它要求系統有1.5版本以上的JDK,點Download在線下載,如果你的機器上有JDK,點Locate找到你機器上已安裝的JDK目錄下/bin/java.exe就可以進行安裝了。
下面就安裝過程詳細說明一下:
第1步,默認即可。
第2步,如果已經有制作好的jar文件,則下面一個"JAR in EXE"。
對于打包jar文件,在eclipse中右擊項目選導出即可,不會制作jar文件可以給我留言
第3步,上面是項目名稱,可隨便填寫,下面一個寫出你想要將打包后的exe文件輸出的目錄:
第4步,由于我的演示程序是圖形的,所以選第一個,如果你的程序是控制臺的,則選擇第二個,Executable name寫你將要生成的exe文件的名字,Icon File可以選擇生成文件的圖標
第5步,首先,單擊綠色的"+"號,在彈出的窗口中點Archive,然后找到起初已經做好的jar文件,"OK"后返回,在下面的Class Path里就出現jar文件路徑后,再在上面Main Class欄內點擊找到main所在的類,這一步即算完成:
第6步,你系統的JRE版本,上面填個1.3,下面填1.6:
當然,這樣配置的程序只能在安裝有JRE的機器上執行,發布時總要考慮的問題就是用戶是否有能力在自己機器上安裝JRE,總不能發布一個程序還要用戶自己安裝個JRE吧,下面我就介紹如何將JDK環境變量動態打包到exe中,在這里單擊advanced options,選擇search sequence。如圖:
首先把JRE復制到exe文件輸出的目錄里,我用的是c:\xaocker\,在彈出的窗口中,刪除列表中所有項,然后單擊綠+,選擇directory并選擇JRE的根目錄(注意是拷貝后的目錄)即可,如圖:
單擊ok后,再從圖中單擊advanced options,并選擇preferred VM,在彈出的窗口中選擇client hostspot VM,單擊next按鈕繼續:
第7、8步是一些基本配置,默認即可,第9步編譯,第10步你就可以點這個看到效果了:
exe4j未注冊的版本會出現下面的對話框:(內有注冊碼 可免費使用)
點擊確定之后就可以看到你程序的運行結果了!
java.exe依照一套邏輯來尋找可以用的JRE,首先查找自己所在的目錄下有沒有JRE,其次查找自己的父目錄下有沒有JRE;最后才是查詢Windows的注冊表。
現在我們的程序可以在任意的計算機上執行了,可是缺點是致命的,比方說我的程序才160K,可是不論走到哪里都要背著70多M的JRE,未免有點小題大做吧,其實作為我們的私有的JRE,好多內容都是可以拋棄的。Jre目錄下的license都可以不要,bin下的執行文件只需要保留java.exe或者javaw.exe,lib下只要保留rt,jsse,jce,charsets幾個庫就可以了。除了i386和zi兩個子目錄外,其余的子目錄都可以不要。Zi下只需要保留自己地區的子目錄和其下的一些文件就可以。Lib下除了庫之外的屬性文件等等都要保留。這樣清理一番,JRE仍然有接近50MB。還可以繼續清理幾個庫文件里面不需要的內容,這需要仔細的整理,會很費功夫。最好能寫出一個自動工具幫助我們整理它們。從Sun公司上下到的JMF里面附帶的用Java寫的媒體播放器就自帶了JRE,只有幾個MB。
清理過后需要運行幾遍我們的應用程序,以確保我們的JRE不缺少東西。
OK,仔細清理之后,文件變小了不少,可以發布了……
?
轉載于:https://www.cnblogs.com/jeff-wgc/p/4561277.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java代码打包成jar以及转换为exe的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码农们不得不重视的问题
- 下一篇: 随笔3