使用jsmooth将jar文件转换成可在无java环境中运行的exe文件

因为项目需要将jar文件转换成exe文件,并确保在无java的环境中也可以正常运行。在网上查了下发现jsmooth可以实现这个功能,但是根据网上的教程在无java环境中运行不了。最后终于发现问题出在哪一步了,在这里整理一下。


从eclipse中导出jar文件开始:

1.导出为可执行的jar文件,如下图:

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第1张图片

2.点击nexe后出现如下的界面,Export destination:中设置导出的jar文件的路径和名称,这里我把导出的jar文件放在桌面的blog文件夹中,生成的jar文件的名称叫做data.jar,注意:最好将现在生成的jar文件和接下来的需要的其他文件放在同一个文件夹中。

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第2张图片

3.点击Finish后可能会出现如下的错误,别理它,点击ok就行了。

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第3张图片


4.eclipse中的操作完成了,因为要将由上面生成的jar文件转换生成的exe在无java的环境中运行,所以需要jre,jre就是自己的机器中安装java时下面的一个jre文件夹。下面是我的机器中java的安装目录,如下图:

使用jsmooth将jar文件转换成可在无java的环境中运行的exe文件使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第4张图片

5.将上面的jre文件夹拷贝中桌面中的blog文件夹中(第二步就是将由eclipse生成的jar文件放在桌面的blog文件夹中),现在桌面中blog文件夹的目录结果如下(icon.png是为生成的exe文件准备的图标):



6.上面的准备工作做完了就可以打开jsmooth了,首先配置skeleton,选择windowd wrapper


7.接下来配置jvm参数,如下图,勾选JVM Bundle,然后在下面选择放置在桌面的jre。
使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第5张图片

8.再配置Executable,在ExecutableBinary输入将要将要生成的exe文件的路径和名称,在Executableicon中选择之前存放在blog中的图片,然后注意勾选下面的那个框。

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第6张图片

9.接下来配置Application,勾选Use an embeddedjar后选择我们需要转换的data.jar文件,再点击Application Settings中的Mainclass,弹出如下所示的对话框。如果只有AvailableClasses而没有我们data.jar中的包名,双击下AvailableClass就会出现下面的子文件夹(注意:org和weka是我的工程中的包名)。


10.接下来这一步可以说是最重要的,我们生成的exe文件能否在无java的环境运行就靠它了。点击Classpath右边的添加按钮,出现一个添加的对话框,然后选择我们放置在blog文件夹中的jre下的bin文件夹和lib文件夹下的所有jar文件。

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第7张图片

11.选择完成后的配置界面如下,可能使用的jre不同,classpath下面中后缀为jar的文件有些不同,这个关系不大。

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第8张图片
12.点击编译,如下图:接下来还会出现输出文件名的对话框,我把它命名为JsmoothFile.smooth,也将它放在blog文件夹下。


13.这是编译完后blog文件夹中的内容,多了两个文件,如图:

使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第9张图片

14.检查下我们对jre的配置是否成功,用文本编辑器打开(我用的是notepad++),如下图:如果出现了红线标示内的内容,就是在第11步中指定的classpath,那么就基本上成功了,如果没有下面的classpath,仔细检查下那步出了问题。



15,下面将功能拷贝到没有java的环境中测试,我是在虚拟机中window8中测试的,如下,在命令行中输入检查是否安装java的命令,显示没有安装java。



16,运行程序,能正常工作,搞定。
使用jsmooth将jar文件转换成可在无java环境中运行的exe文件_第10张图片


17,还有一点需要特别注意,就是那个data.exe运行时需要与jre文件夹放置在同一级目录中,根据相对路径的知识这点很容易理解,不能单独只拷贝data.exe就运行,那样在没有java的环境中可能运行不了。在没有java的环境中之所以能运行是因为我们自带了jre,就是同一级目录中的jre,并且在data.exe用相对路径指定了这个jre的位置。


你可能感兴趣的:(使用jsmooth将jar文件转换成可在无java环境中运行的exe文件)