在这之前已经有很多人讲过怎么用JSmooth了,如BeanSoft还贴了自己的视频,网址是: http://download.gro.clinux.org/beansoft/JSmooth_zh_CN.swf 大家记得去参考,做的挺好的。
写这篇文章一是为了完整性,再一个一步一步过来比较自然,先学会简单易用的,思维也容易清晰。很多的文章也免不了千篇一例,过来看看我的见解还是值得的,呵呵。
其实这款小软件真是一堆一堆的漏洞,但还是勉强可用,作为开源打包的入门软件。通常都用JSmooth 0.9.9-7版本的,看看下面的图
是我们的beansoft翻译的,上次说过了,有问题可要请教他呀。
先别急着动手,先说学完咱们可以做啥,一个是你可以生成一个有exe壳的jar应用程序,其实就是在你的包里多了一个exe文件,其他的依旧在,不要以为拿着你的exe就出去用了,脱离了你的这个jar,你的这个文件结构就玩完了,甚至脱离了你本地机的java环境就没戏了。你不能要求客户都安装jdk吧,人家不想搞研发。别灰心,看完本文你就知道怎么脱离java环境了(只是脱离本地机java环境哦,不是脱离你的那个包结构,还没那么智能的)。虽然是很简单,可当初我也是不了解。几个人硬没弄出一个脱离java环境的,加上小软件经不起蹂躏,然后不得不怪软件是中文版的,还动手用c来生成exe调用巨大的jdk,然后脱离本地机java。转了一圈回来才理解了怎么回事。之所以说它经不起蹂躏就是你不要对着上面的按钮哗啦哗啦的点,一不小心,它不反应了,你的从新打开,次数开多了,说不定每次都不让你看某些界面。除非你重启。或者正常的某个功能就是不理你了,或者生成的时候忘了敲上exe而不得不从来。所以蹂躏对软件和你都没好长。
下面分两部分,一部分教你用最简单的方式打出exe,体会一下成功的快乐。一部分教你加上jre脱离本地机java。
前提,你有java环境(安装了jdk)
最简单的exe打包
其实最简单的打包只要写三个地方就可以打了,而你可以对着一个jar文件就打成你的exe,有一点就是你要知道jar里的主类是谁,不知道这个概念就问问别人。那么开始吧,讲的算细了。
打开绿色软件中的jsmoothgen.exe就开始了。这里以打Java2Demo.jar为例(在jdk的demo里有,我就不提供了),
1. 点击 骨架,选择Windowed Wrapper (表示打的是windows下的,左边栏从上到下就一打包流程,很多都没用上,也没细究。移动鼠标到“?”,人家告诉你该做什么。别太兴奋。)
2.点击 可执行文件,点击红线处的按钮找到你的jar文件,记得换后缀为exe,如图
3. 点击 应用程序,点击classpash 那一栏右边的加号,把你的jar加进去,然后点击红线处,弹出的框中只有一个文件夹,双击打开,直到找到你的主类为止,点击 select 确定,如下两幅图所示
开始生成吧,点击工具栏里的小齿轮,弹出对话框,路径就选在你打包的文件下(好像是必须的),写上名称,如图,确定即可在你的包里看到这个exe。
打开E:"Java2D看到
其中j2d.jsmooth是jsmooth生成的配置文件,Java2Demo.exe即你要的,点击试试,看能不能用,然后把exe剪切到其他地方看能不能用,放回来,把C:"Program Files下的java文件夹改名字(注意把用到java虚拟机的软件都关了),看exe还能不能用。(别忘了改回来。)
结果清楚了exe不能和jar分离了,也不能离开jvm环境,下面我们就让他脱离本机java环境。这样的exe可以为我们进一步的打包奠定基础,所有它是有用的。
准备条件:把你jdk下的jre考到和jar同一个目录,要图标就找好一个“.ico”的文件三个放同一文件夹下
下面开始:
1. 和刚才一样,点击 骨架,选择Windowed Wrapper。
2. 点击 可执行文件,找到你的jar文件,记得换后缀为exe,同样找到包里准备好的ico文件如下图
这就看到一个bug了,我选的ico它显示为另外一个以前同名的ico,即使我改了它的名,其实还有另一点令人不舒服的,就是每次点击找路径都从头找,它不帮你记下。另外注意一点我一来点了保存,把j2d.exe.jsmooth存到了e:"java2D下,所以你看到的路径很短,
3.和刚才一样找到jar放到classpath里,然后找到主类,(注意顺序性)
4.点击 jvm选项 ,在jvm捆绑包那选上复选框,点红线处找到jre路径并确定。如图
选择了jre
5.开始生成吧,点击工具栏里的小齿轮,弹出对话框,路径就选在你打包的文件下,写上名称,如图,
确定生成
exe是你要的,这里要抱歉一下,它的bug所致,ico用的不是我当前的ico,但也没什么影响。J2d.bmp什么的是不必要的,下一节才用上,点击exe看,把C:"Program Files下的java文件夹改名字再试一次,噢,可以了,呵呵。Jsmooth 的其他选项就考各位补充了,俺不太明白了,谢谢各位。下次讲launch4j打包。
一种更好的态度,更好的学习、思维方式。它会是网络极佳的生存方式,你喜欢就对。