jar 轉(zhuǎn) exe 個(gè)人經(jīng)驗(yàn)總結(jié)(轉(zhuǎn))
jar 轉(zhuǎn) exe的工具很多,比較流行的有exe4j 、installanywhere(主要做安裝)、jsmooth。我在這里選擇了jsmooth。實(shí)際上jsmooth 和exe4j的操作都差不多,而jsmooth比exe4j還要小巧,我選擇jsmooth。制作分兩種情況,一種是將jre 和 exe一同發(fā)布,這樣你就可以不用考慮客戶機(jī)器上安裝jvm沒(méi)有了。一種是要求客戶機(jī)器上安裝有jre的情況。
1. 先將要求客戶機(jī)上安裝有jre的情況:
很多文章都喜歡從界面操作上開(kāi)始講,而我認(rèn)為從項(xiàng)目文件講就更簡(jiǎn)單了。如下是我的jar轉(zhuǎn)exe的test.exe.jsmooth文件。用jsmooth直接打開(kāi) test.exe.jsmooth這個(gè)文件(至于界面上每一步該怎么設(shè)置都一目了然,全設(shè)置好了。),直接編譯就ok了。
test.exe.jsmooth文件內(nèi)容如下:
?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>表示運(yùn)行參數(shù)。
(2).<currentDirectory>.</currentDirectory>表示的是當(dāng)前目錄,那么你直接把要轉(zhuǎn)換的jar和test.exe.jsmooth放在同一個(gè)目錄。(我這里都是放在同一個(gè)目錄下)
(3).<executableName>test.exe</executableName>表示生成exe的名字。(我沒(méi)有測(cè)試放在不同目錄下的結(jié)果,我不認(rèn)為有必要做這個(gè)測(cè)試)。
(4).<iconLocation>Ico02?042.ico</iconLocation>表示exe所使用的圖標(biāo)。
(5).<jarLocation>JavaApplication19.jar</jarLocation>表示要轉(zhuǎn)的jar文件。
(6).<mainClassName>Client</mainClassName> 表示主類(lèi)(7).<skeletonName>Windowed?Wrapper</skeletonName>表示的是運(yùn)行時(shí)候,不需要帶dos控制臺(tái)窗口。對(duì)應(yīng)的是Console?Wrapper。
直接保存test.exe.jsmooth文件就可以用。
對(duì)于應(yīng)用的目錄結(jié)構(gòu)圖:

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>
……后面同上例一樣。
最重要的區(qū)別是這個(gè)綁定了java虛擬機(jī),指定了classpath路徑。
編譯時(shí)候,把java文件放在同一目錄下:

其中test.exe是生成的。
簡(jiǎn)單吧,編譯就生成了exe文件了。
posted on 2007-03-12 12:02 liaojiyong 閱讀(3470) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Java