使用JSmooth java转exe总结

jar 转 exe的工具很多,比较流行的有exe4j 、installanywhere(主要做安装)、jsmooth。我在这里选择了jsmooth。实际上jsmooth 和exe4j的操作都差不多,而jsmooth比exe4j还要小巧,我选择jsmooth。
制作分两种情况,一种是将jre 和 exe一同发布,这样你就可以不用考虑客户机器上安装jvm没有了。一种是要求客户机器上安装有jre的情况。

1. 先将要求客户机上安装有jre的情况:
很 多文章都喜欢从界面操作上开始讲http://www.java1995.cn/blog/item/446 ,而我认为从项目文件讲就更简单了。如下是我的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 >


其中:
(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文件就可以用。
对于应用的目录结构图:
21.jpg

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文件放在同一目录下:
22.jpg
其中test.exe是生成的。
简单吧,编译就生成了exe文件了。

你可能感兴趣的:(java,jvm,xml,虚拟机,dos)