制作分兩種情況,一種是將jre 和 exe一同發布,這樣你就可以不用考慮客戶機器上安裝jvm沒有了。一種是要求客戶機器上安裝有jre的情況。
1. 先將要求客戶機上安裝有jre的情況:
很多文章都喜歡從界面操作上開始講,而我認為從項目文件講就更簡單了。如下是我的jar轉exe的test.exe.jsmooth文件。用jsmooth直接打開 test.exe.jsmooth這個文件(至于界面上每一步該怎么設置都一目了然,全設置好了。),直接編譯就ok了。
test.exe.jsmooth文件內容如下:
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <jsmoothproject>
3 <JVMSearchPath>registry</JVMSearchPath>
4 <JVMSearchPath>javahome</JVMSearchPath>
5 <JVMSearchPath>jrepath</JVMSearchPath>
6 <JVMSearchPath>jdkpath</JVMSearchPath>
7 <JVMSearchPath>exepath</JVMSearchPath>
8 <JVMSearchPath>jview</JVMSearchPath>
9 <arguments></arguments>
10 <currentDirectory>.</currentDirectory>
11 <embeddedJar>true</embeddedJar>
12 <executableName>test.exe</executableName>
13 <iconLocation>Ico02 042.ico</iconLocation>
14 <initialMemoryHeap>-1</initialMemoryHeap>
15 <jarLocation>JavaApplication19.jar</jarLocation>
16 <mainClassName>Client</mainClassName>
17 <maximumMemoryHeap>-1</maximumMemoryHeap>
18 <maximumVersion></maximumVersion>
19 <minimumVersion></minimumVersion>
20 <skeletonName>Windowed Wrapper</skeletonName>
21 <skeletonProperties>
22 <key>Message</key>
23 <value>This program needs Java to run.
24 Please download it at http://www.java.com</value>
25 </skeletonProperties>
26 <skeletonProperties>
27 <key>URL</key>
28 <value>http://www.java.com</value>
29 </skeletonProperties>
30 <skeletonProperties>
31 <key>SingleProcess</key>
32 <value>1</value>
33 </skeletonProperties>
34 <skeletonProperties>
35 <key>Debug</key>
36 <value>0</value>
37 </skeletonProperties>
38 </jsmoothproject>
2 <jsmoothproject>
3 <JVMSearchPath>registry</JVMSearchPath>
4 <JVMSearchPath>javahome</JVMSearchPath>
5 <JVMSearchPath>jrepath</JVMSearchPath>
6 <JVMSearchPath>jdkpath</JVMSearchPath>
7 <JVMSearchPath>exepath</JVMSearchPath>
8 <JVMSearchPath>jview</JVMSearchPath>
9 <arguments></arguments>
10 <currentDirectory>.</currentDirectory>
11 <embeddedJar>true</embeddedJar>
12 <executableName>test.exe</executableName>
13 <iconLocation>Ico02 042.ico</iconLocation>
14 <initialMemoryHeap>-1</initialMemoryHeap>
15 <jarLocation>JavaApplication19.jar</jarLocation>
16 <mainClassName>Client</mainClassName>
17 <maximumMemoryHeap>-1</maximumMemoryHeap>
18 <maximumVersion></maximumVersion>
19 <minimumVersion></minimumVersion>
20 <skeletonName>Windowed Wrapper</skeletonName>
21 <skeletonProperties>
22 <key>Message</key>
23 <value>This program needs Java to run.
24 Please download it at http://www.java.com</value>
25 </skeletonProperties>
26 <skeletonProperties>
27 <key>URL</key>
28 <value>http://www.java.com</value>
29 </skeletonProperties>
30 <skeletonProperties>
31 <key>SingleProcess</key>
32 <value>1</value>
33 </skeletonProperties>
34 <skeletonProperties>
35 <key>Debug</key>
36 <value>0</value>
37 </skeletonProperties>
38 </jsmoothproject>
其中:
(1).<arguments></arguments>表示運行參數。
(2).<currentDirectory>.</currentDirectory>表示的是當前目錄,那么你直接把要轉換的jar和test.exe.jsmooth放在同一個目錄。(我這里都是放在同一個目錄下)
(3).<executableName>test.exe</executableName>表示生成exe的名字。(我沒有測試放在不同目錄下的結果,我不認為有必要做這個測試)。
(4).<iconLocation>Ico02 042.ico</iconLocation>表示exe所使用的圖標。
(5).<jarLocation>JavaApplication19.jar</jarLocation>表示要轉的jar文件。
(6).<mainClassName>Client</mainClassName> 表示主類(7).<skeletonName>Windowed Wrapper</skeletonName>表示的是運行時候,不需要帶dos控制臺窗口。對應的是Console Wrapper。
直接保存test.exe.jsmooth文件就可以用。
對于應用的目錄結構圖:

2.第2種情況,即帶jre的exe
<?xml version="1.0" encoding="ISO-8859-1"?>
<jsmoothproject>
<JVMSearchPath>registry</JVMSearchPath>
<JVMSearchPath>javahome</JVMSearchPath>
<JVMSearchPath>jrepath</JVMSearchPath>
<JVMSearchPath>jdkpath</JVMSearchPath>
<JVMSearchPath>exepath</JVMSearchPath>
<JVMSearchPath>jview</JVMSearchPath>
<arguments></arguments>
<bundledJVMPath>java</bundledJVMPath>
<classPath>java\bin</classPath>
<classPath>java\lib</classPath>
<classPath>java\lib\rt.jar</classPath>
<classPath>java\lib\javaws.jar</classPath>
<currentDirectory>Test.exe</currentDirectory>
<embeddedJar>true</embeddedJar>
<executableName>Test.exe</executableName>
……后面同上例一樣。
最重要的區別是這個綁定了java虛擬機,指定了classpath路徑。
編譯時候,把java文件放在同一目錄下:

其中test.exe是生成的。
簡單吧,編譯就生成了exe文件了。