天天看點

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

因為項目需要将jar檔案轉換成exe檔案,并確定在無java的環境中也可以正常運作。在網上查了下發現jsmooth可以實作這個功能,但是根據網上的教程在無java環境中運作不了。最後終于發現問題出在哪一步了,在這裡整理一下。

從eclipse中導出jar檔案開始:

1.導出為可執行的jar檔案,如下圖:

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

2.點選nexe後出現如下的界面,Export destination:中設定導出的jar檔案的路徑和名稱,這裡我把導出的jar檔案放在桌面的blog檔案夾中,生成的jar檔案的名稱叫做data.jar,注意:最好将現在生成的jar檔案和接下來的需要的其他檔案放在同一個檔案夾中。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

3.點選Finish後可能會出現如下的錯誤,别理它,點選ok就行了。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

4.eclipse中的操作完成了,因為要将由上面生成的jar檔案轉換生成的exe在無java的環境中運作,是以需要jre,jre就是自己的機器中安裝java時下面的一個jre檔案夾。下面是我的機器中java的安裝目錄,如下圖:

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案
使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

5.将上面的jre檔案夾拷貝中桌面中的blog檔案夾中(第二步就是将由eclipse生成的jar檔案放在桌面的blog檔案夾中),現在桌面中blog檔案夾的目錄結果如下(icon.png是為生成的exe檔案準備的圖示):

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

6.上面的準備工作做完了就可以打開jsmooth了,首先配置skeleton,選擇windowd wrapper

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

7.接下來配置jvm參數,如下圖,勾選JVM Bundle,然後在下面選擇放置在桌面的jre。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

8.再配置Executable,在ExecutableBinary輸入将要将要生成的exe檔案的路徑和名稱,在Executableicon中選擇之前存放在blog中的圖檔,然後注意勾選下面的那個框。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

9.接下來配置Application,勾選Use an embeddedjar後選擇我們需要轉換的data.jar檔案,再點選Application Settings中的Mainclass,彈出如下所示的對話框。如果隻有AvailableClasses而沒有我們data.jar中的包名,輕按兩下下AvailableClass就會出現下面的子檔案夾(注意:org和weka是我的工程中的包名)。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

10.接下來這一步可以說是最重要的,我們生成的exe檔案能否在無java的環境運作就靠它了。點選Classpath右邊的添加按鈕,出現一個添加的對話框,然後選擇我們放置在blog檔案夾中的jre下的bin檔案夾和lib檔案夾下的所有jar檔案。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

11.選擇完成後的配置界面如下,可能使用的jre不同,classpath下面中字尾為jar的檔案有些不同,這個關系不大。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

12.點選編譯,如下圖:接下來還會出現輸出檔案名的對話框,我把它命名為JsmoothFile.smooth,也将它放在blog檔案夾下。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

13.這是編譯完後blog檔案夾中的内容,多了兩個檔案,如圖:

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

14.檢查下我們對jre的配置是否成功,用文本編輯器打開(我用的是notepad++),如下圖:如果出現了紅線标示内的内容,就是在第11步中指定的classpath,那麼就基本上成功了,如果沒有下面的classpath,仔細檢查下那步出了問題。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

15,下面将功能拷貝到沒有java的環境中測試,我是在虛拟機中window8中測試的,如下,在指令行中輸入檢查是否安裝java的指令,顯示沒有安裝java。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

16,運作程式,能正常工作,搞定。

使用jsmooth将jar檔案轉換成可在無java環境中運作的exe檔案

17,還有一點需要特别注意,就是那個data.exe運作時需要與jre檔案夾放置在同一級目錄中,根據相對路徑的知識這點很容易了解,不能單獨隻拷貝data.exe就運作,那樣在沒有java的環境中可能運作不了。在沒有java的環境中之是以能運作是因為我們自帶了jre,就是同一級目錄中的jre,并且在data.exe用相對路徑指定了這個jre的位置。