利用IDEA和exe4j生成exe檔案及資原始檔和so、dll檔案的放置
在網上搜尋大部分文章,發現並不能完全解決自己的問題時,遂自己摸索,然後總結寫下此文。
在貼出具體步驟前,我們需要先換位思考下,假如我們是設計者我們該如何讓一個java專案展現在使用者面前呢
1.首先得有個java環境吧,才能在jvm上跑你的虛擬機器(jre資料夾)
2.跑你的專案,jvm首先得知道你寫了啥程式碼吧(jar包),並且知道這個專案的入口在哪(main函式)
3.假如你專案裡用了一些圖片音樂,或者三方庫資源(三方jar包,so庫,dll檔案等),你也得告訴jvm在哪裡找吧
基於以上三點,我們帶著上面的思考來一步一步做吧
1.提取出我們寫的程式碼
開啟File -> Project Structure,如下圖。
依次點選圖中的按鈕出現“Empty”和"From modules with dependencies"兩個選項。
個人見解:其中Empty只會匯出你自己寫的程式碼並且已經編譯好了,而不會匯出你使用的三方jar包裡面的程式碼,雖然你可以手動新增進去,不過只是以新增檔案的形式新增進去,並不會給你編譯好,如下圖
而"From modules with dependencies"選項則會直接幫我們把所以程式碼(你自己寫的和三方引用的)直接放在一起編譯,同時直接生成Mainfest檔案,可以說是非常快捷的一種方式了,同時體積自然比上一種要大很多,如下圖
讓我們來看看兩個選項的區別吧
然後我們回到程式設計介面,點選,點選生成我們的jar包檔案,當然build和rebuild都可以的,我們生成的jar包檔案在之前系統自動給我們設定的地址中(Output directory),假如你沒有更改的話是在這裡,
我們直接複製貼上到桌面即可,當然,為了方便我們還是創一個“SoundTool”的資料夾放它
2.提取我們所用到的資原始檔和so庫
在這裡需要提的就是,在專案裡引用的資原始檔(當然是你直接放在專案裡的,比如resource資料夾下)都是使用相對路徑的。
題外話,我們在使用URL時經常訪問本地地址,這個時候就需要加上“file:///”,"file://"是固定格式,代表是本地檔案,而第三個"/"則代表是檔案系統的根目錄比如“file:///C:/dir”什麼的。
而在專案裡面我們訪問的時候則不需要這麼複雜,可以像“src/main/resources/imgs”這麼呼叫,因為沒有“/”號則代表的是專案所在的相對路徑,所以假如你在專案裡引用了資原始檔的話你就需要把檔案拿出來,並且放置的位置切合你程式碼裡設定的路徑,不然程式會找不到
在資原始檔設定好了之後,我們就可以考考三方so庫和dll檔案的事了。因為在匯出jar包的時候,so庫和dll檔案並未參與編譯,但是不要慌,設計者們早就考慮好了,讓我們們生成exe檔案的時候可以讓他們參與連線,讓exe檔案可以知道在哪裡去呼叫他們(感覺其實就是新增了放置so庫和dll檔案的路徑),所以現在我們得先把他們拿出來。
好了,讓我們進入最為複雜的一步吧
3.生成exe檔案
首先,你需要一個exe4j的程式,程式可以直接百度找到官網下載,下載方式和安裝程式非常簡單,這裡不過多敘述。
註冊碼如下:
A-XVK258563F-1p4lv7mg7sav
A-XVK209982F-1y0i3h4ywx2h1
A-XVK267351F-dpurrhnyarva
A-XVK204432F-1kkoilo1jy2h3r
A-XVK246130F-1l7msieqiwqnq
A-XVK249554F-pllh351kcke50
A-XVK238729F-25yn13iea25i
A-XVK222711F-134h5ta8yxbm0
A-XVK275016F-15wjjcbn4tpj
A-XVK275016F-15wjjcbn4tpj
之後點選Next下一步
選擇使用jar生成exe,點選Next下一步
點選Next下一步
然後點選Next下一步
之後設定so庫和dll檔案連線的設定
點選Next下一步
然後點選Next下一步
至此,已經大功告成,剩下的設定已經是我們基本不會更改的了,如語言設定什麼的,剩下的就是一路Next
讓我們來看看最終的目錄結構和執行結果吧
功能正常執行,並且成功讀取資原始檔。美中不足的是,資料夾整個184Mb的大小,jre檔案佔了150Mb,這一點暫時不知道怎麼解決,如果讀者知道請務必告訴我
相關文章
- matlab開啟和生成使用.p檔案和exe檔案Matlab
- dll和so檔案區別與構成
- cmakelist 原始碼生成so 檔案 orthanc mysql原始碼MySql
- PyCharm GUI介面開發和exe檔案生成PyCharmGUI
- Android so檔案生成Android
- Matlab生成exe檔案Matlab
- 利用IDEA進行JNI開發:生成Windows平臺下的dll檔案IdeaWindows
- Matlab生成.exe格式檔案Matlab
- matlab (.m)檔案生成 windows 可執行(.exe)檔案MatlabWindows
- IDEA--生成POJO類及配置檔案IdeaPOJO
- Patch檔案的生成和使用
- .dll,.lib,.def 和 .exp檔案
- IDEA中的.iml檔案和.idea資料夾Idea
- 利用IDEA進行JNI開發:使用NDK生成Linux平臺下的so檔案IdeaLinux
- 資料庫檔案和檔案組資料庫
- Android .SO 檔案的相容和適配Android
- Java™ 教程(管理原始檔和類檔案)Java
- MATLAB生成.coe檔案和.mif檔案程式碼示例Matlab
- jvm 生成javacore和heapdump檔案JVMJava
- 將WAV檔案做到EXE檔案的方法及注意事項 (轉)
- 將Jar檔案製作成exe檔案JAR
- 遞迴遍歷磁碟下的某一資料夾中所有檔案,並copy檔案生成檔案和帶資料夾的檔案遞迴
- 檔案和檔案系統
- windows系統清理磁碟臨時檔案,及緩衝檔案,及離線檔案和空閒檔案Windows
- 利用msfvenom生成木馬檔案
- 教你利用PHP生成PDF檔案PHP
- Depends.exe檢視dll動態鏈檔案
- .ora檔案、.dbf檔案和.dat檔案的區別
- Oracle資料檔案和臨時檔案的管理Oracle
- 引數檔案控制檔案和資料檔案丟失的恢復
- AIX和Redhat的passwd檔案和shadow檔案AIRedhat
- jar檔案換成exe檔案問題?JAR
- git的gitignore檔案排除資料夾和檔案Git
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- 當編譯VC專案時提示不能開啟生成的動態庫.dll或者.exe檔案編譯
- 減小Delphi xe系列生成的exe檔案大小
- .NET 中的動態編譯(生成exe檔案)編譯