子柯's profilezicoPhotosBlogLists Tools Help

Blog


    April 26

    关于两种将Java程序转化为.exe程序工具的使用及比较

     

    这几天在逛blog的时候看到有关于java生成exe的工具的介绍。想到iterm上次提到的需要exe的需求。于是趁着上午比较犯困的时间,试用了两款,并对其作用作了稍稍的比较。并将结果备录在案。

    JSmooth

    1.          出品

    Jsmooth,Sourceforge.net

    2.          类型

    free

    3.          下载

    http://jsmooth.sourceforge.net/download.php

    4.          步骤

    a)          利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass

    b)         新建一个Jsmooth工程

    c)          sketlon中选择“Console“ 或者 “Windowed“

    d)         Executable中的配置:

                             i.              Executable Binary:填写目的输出源的名称。如test.exe.

                            ii.              Executable Icon  :选择一个好看点的图标

                          iii.              Current Driectory .(表示当前工程目录,当然也可行换成别的,As you wish.)

    e)          Application中的配置:

                             i.              Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库

                            ii.              Main-Class:选中我们所需要运行的主类。

                          iii.              可选项Use an embedded jar:运行该exe时可能需要到的类库(这里只能有一个类库)。

    f)          JVM Selection中的配置:

                             i.              Minimum JVM Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4

    g)          CompileOK,编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it.

      exe4J

    1.          出品

    ej-technologies

    2.          类型

    Shared software,needs license

    3.          下载

    http://www.ej-technologies.com/download/exe4j/files.php

    4.          步骤

    a)          利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass

    b)         新建一个exe4j工程

    c)          选择“JAR in exe“ mode

    d)         Configure application中的配置:

                             i.              Short name:随便写.

                            ii.              Ourput Driectory :选择输出路径。

    e)          Configure Executable中的配置:

                             i.              Executable type 有三个选项,图形,控制台.或服务。从简单点开始吧,这里我们选console

                            ii.              Executable name:填写目的输出源的名称。如test.exe

                          iii.              Icon fileexe图标文件,但必须是.ico文件

    f)          Configure Java invocation中的配置:

                             i.              Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库

                            ii.              Main-Class:选中我们所需要运行的主类。

                          iii.              Arguments(可选项):输入参数。我们这里暂不需要。

    g)          Configure JRE中的配置:

                             i.              Minimum Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4

    h)         一直next,对于所遇到的步骤选项都默认,直到finishOK。编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it.

         总结和比较

             Java生成exe的工具还有很多,上面两种是我个人觉得用起来觉得比较方便的。两者的原理基本相同,但具体用起来还是有一点点不太一样的:

    1.          相同点

    a)          最大的相同点当然是他们原理是互通的。都是通过将可运行的java程序打成可执行的jar包。再作转换。

    b)         所生成的exe可执行程序,需要在装有比minimum version高JVM环境下运行。

    2.          不同点

    a)          生成exe的时候,如果想要exe只需要pure JVM的环境(不需要第三方的类库)就可以运行的话。在JSmooth需要将所有的用到的第三方类库压缩成一个jar包(因为它有个embeded jar的选项),这就比较麻烦,因为当需要的jar多于一个时候,就需要将这些jar包先用jar –xvf 解压缩,在用jar –cvf重新制作新的jar文件,再放到embeded jar选项中去;而exe4J则会把classppath中所用到的jar包也会编译到exe中去。

    b)         JSmooth是免费的;而exe4J是共享软件,需要注册,否则在执行exe的时候会弹出很惹人烦的提示框。

    c)          ico文件的选择:exe4J要求严格的ico文件,JSmooth则可以兼容jpg等其他各式的图片。

    April 25

    一只破水桶的启示

          一位农夫有两只水桶,他每天就用一根扁担挑著两只水桶去河边汲水。

      两只水桶中有一只有一道裂缝,因此每次到家时这只水桶总是会漏得只剩下半桶水,而另一只桶却总是满满的。就这样,两年以来,日复一日,农夫天天只能从河里担回家一桶半水。

      完整无缺的桶很为自己的完美无缺得意非凡,而有裂缝的桶自然为自己的缺陷和不能胜任工作而羞愧。经过两年的失败之后,一天在河边,有裂缝的桶终于鼓起勇气向主人开了口:「我觉得很惭愧,因为我这边有裂缝,一路上漏水,只能担半桶水到家。」

      农夫回答它说:「你注意到了吗?在你那一侧的路沿上开满了花,而另外的一侧却没有花?我从一开始就知道你有漏,于是在你的那一侧的路沿撒了花籽。我们每天担水回家的路上,你就给它们浇水。两年了,我经常从这路边采摘鲜花来装扮我的餐桌。如果不是因为你的所谓的缺陷,我怎么会有美丽的鲜花装扮我的家呢?」

      我们每个人都好比那只有裂缝的桶,各自都具有这样或那样的不足和缺点。倘若我们怀著一颗包容的心,懂得发现对方的长处,并且能够扬长避短,我们的生活一定会变得更加轻松愉快和丰富多彩。
     
       zico按:一个很老的故事,但每次看上去都还是那么有感觉。有时候想到自己的不足会不经意间给他人带来幸福,其实自己也是能收获快乐的。
    April 18

    Travel in South Switzerland

    4.5日送Miss.Fang回国,早上很早就起来了,天气不是很好,下着小雨,有点风。由于飞机是下午1点多起飞,所以我们选择先去Geneva玩一下。在火车站把行李寄存下来,便开始绕着Geneva的街道逛游。雨越下越大,风也越刮越紧。前几日明媚的阳光一时间全被这突如其来的阴霾一扫而光。
    相比之下,Geneva要比Fribourg大多了,毕竟是联合国欧洲总部的所在地。因为下雨,路上没有耽搁多少时间,便来到了日内瓦湖。它是西欧最大的湖,分属于瑞士和法国。湖中心有个巨大的喷泉,只见一个擎天的水柱直冲云端。几乎在城市的每个角落都能看到,不愧为世界上最大的人工喷泉,它已经成为了Geneva城市的标志。本来可以坐着小船,去湖里游荡的。但由于下雨或者时间比较早的缘故,几艘船都不出行。虽然日内瓦湖坐落于城市中间,但这里的环境保护的很好,到处可见野鸭、天鹅等非常可爱的动物(湖边有关于湖里的动物的名称和习性的介绍,有法文,德文,英文还有日文!唉,啥时候才会有中文的介绍呢?)。甚至于在我们下到湖边准备近距离观察时,有只野鸭忽然冲天而起,待仔细观察,才发现岸边竟然有个野鸭的窝,窝里面还有6个正在孵化中的鸭蛋,显然鸭妈妈是受到我们的惊吓了。呵,要是在以前,说不定就直接把鸭蛋抱回去给煮了:)。可在这种环境下,又有谁愿意去破坏这种和谐的自然环境呢?
    雨越下越大,使我们本来多转一点的打算也付之东流,匆匆从湖畔赶往火车站,提了行李,便跳上火车前往日内瓦机场。提前2个小时Miss Fang就check-in了,手续很简单。和Miss Fang道别后。便只身一人前往另一个城市Lausanne。
    由于我有张通票,可以任意做各种交通工具。呵呵:) 下雨的雨渐渐下了点。带了Lausanne之后,照例先找张地图,便开始找去奥林匹克公园的路。Lausanne城市也比较大,从来往的车辆和铁轨的数量上就能看出来。来瑞士这么多天,也逛过几个城市,比如Bern,Fribourg,Geneva,Lausanne,给我的感觉都是大同小异,基本上到处都是欧式的建筑,教堂,清澈的湖水,远处的雪山,湖边的公园。可能是因为日内瓦是联合国欧洲总部的所在地的缘故吧,看起来更加摩登一点。
    去奥林匹克公园着实花费了不少功夫,只记得一直down,down,down...的就到了。公园里可以随便进出,不需要买票。到处可见参天大树和各种叫不出名的动植物。可能是和奥林匹克搭上关系的缘故吧,公园里有很多各种体育项目的雕塑和建筑,都灵冬奥会才刚刚落幕,公园里的宣传标语却仍然十分醒目。路上,遇到两个估计是华裔(从发音上猜测估计是新加坡人),在公园里照了几张相以示纪念。从公园出来,便又来到日内瓦湖,Lausanne坐落于日内瓦湖的北岸,从Geneva到Lausanne火车都做了一个小时,可见日内瓦湖之大。下午的时候,游船已经开放了,于是跳上去,找个位置坐下。
    船不大,但仍然分了两层,设备也比较齐全,想来生意也是比较红火。随着游船的起航,开始欣赏起湖光山色。置身其中,才感觉湖确实很大,可惜是乌云笼罩,不然碧波荡漾之下的日内瓦湖肯定会有另一番景色。大约半个小时后,船便到了对岸,我也懵懵懂懂的跟着人群跳下了甲板,出去的时候,发现几个警察在检查证件,才突然醒悟,原来我已经踏在了法兰西的土地上。没什么好说的,
    由于没有申根国或者法国的签证,只能重新跳回船舱返回Lausanne。一番折腾之后,已经基本体力透支了,便毅然决定返回。更让人纳闷的是,快到Fribourg的时候,居然又下起雪来。奇怪的天气。奇怪的地方。
    April 12

    About Fribourg

    结结实实的睡了一觉,洗了个澡后,便去找Miss Fang.路并不远,过了火车站,转个弯就到了,就是需要过几个红绿灯。过人行道的时候,需要摁一下提示灯才能过街。有的小街道就没有红绿灯了,可以大摇大摆的走过去,刚开始还很不习惯,早已习惯于人让车,这的司机却示意让我先过去。困惑中。。。和Miss Fang来到Fribourg大学。在他和Zhang讨论期间,我在公共机房处上了会网。给大家发了个平安信。瑞士主要是德语和法语,意大利语及其他语用的少一点,德语区算是比较大一的。连机房里的键盘都是德式的。很多键位和以前的习惯都不一样,最明显的就是y和z互换了,常用符号也大相径庭。写封mail也不容易啊。sign。。。。
    中午和Miss Fang在Zhang家里吃的饭,欧式的房子从外面看都比较有特色,可能是以前见的少的缘故吧。Zhang的房子选址很好,坐在庭院里面就能看见阿尔卑斯山脉的源头。远远望去,初春里的阿尔卑斯山如初生的婴儿一样,静静的熟睡在蓝天白云之下,山上的积雪常年不话,一如我想象的样子。让我有了登山的冲动。夫人为我们作了pasta和当地一种特有的鱼。pasta的味道确实不错,暗想一定要学会(实际上它现在已经成了我的主食了:))。午餐刚开始时候,虽然自上飞机以来还没怎么好好对得住自己的肚子,但出于礼仪,还是比较矜持的:)。后来实在抵挡不住pasta的诱惑以及主人的热心,几乎把大部分pasta都给消灭了^-^
    茶歇之后,我们绕着在Fribourg的比较古老的街道上转悠了一圈,Miss Fang说欧洲的城市风格上基本上大同小异。这里给我最大的印象就是尊重历史,最为深刻的就是街边摆放着一辆以前的推车,车上倒扣着一口破锅,随意放在那里,没有人去碰它,也决不会被当作垃圾给回收了。可能是由于临近雪山的缘故,或者是因为雨水充足又是山区,城市里随处可见喷泉,泉水和宿舍中的水管中的水一样,清澈透底,都是可以直接饮用的。
    教堂里的钟声从远处传来,夕阳挥洒在宁静的城市中,一切显得那么安逸和谐。而我则又爬回小楼与睡床成一统去了。:)
    April 10

    Long journey

    4月1日愚人节。victor和他的家属送我去机场。前一天晚上和victor很晚才睡,不知道是因为即将分离的不舍,还是踏上新的征程的彷徨与等待,早上7点多就醒了。踹醒还在熟睡的victor,回到宿舍,本想和neo,bbyuan和弟弟话别,看他们还在甜蜜的神游中,实在不忍心打扰。我们三人拖着行李悄悄地赶到机场大巴处,周末的清晨,道路通畅,是否预示着预示着新的旅途也能一帆风顺呢?到了机场,和victor及其家属作了最后的话别,我们曾戏称这将是白发人送黑发人,没想到它来的是如此迅速。
    之后便是在免税区小逛游了一下,很快就登机了。去莫斯科的人很多,基本上都是中国人和俄国人。飞机刚刚起飞不久,几天来疲惫便占据了大脑的制高点,于是抱起枕头就睡了。没过多久,俄罗斯空姐提醒大家吃午餐的声音把我从睡梦中叫醒。望着包着严严实实的食物,十几年学的英语忘记的一干二净。除了beef,orange,water之外,我的大脑中似乎已经完全没有其他的词汇了。sign...因为完全不懂俄文,飞机上的电视什么的也完全看不懂,此时的我恨不得生活在一个无声的世界中,至少还能睡个安稳觉阿。吃晚餐的时候,从窗口望下去,一片冰天雪地。我想这应该就是西伯利亚了吧。
    8个多小时后,当飞机徐徐降落在 谢诺梅杰沃机场的时候,我还傻傻的像是不是可以看见克林姆林宫。现在想想,当时的想法真的有点幼稚。当我踏出飞机,双脚第一次踏在异国他乡的土地上,仿佛还能感受到十月革命的的硝烟(夸张了。。。。)。由于没有去俄罗斯的签证,只是在护照上加盖一个过境的章,便第一时间改换了登机牌,正在等待工作人员开门的当口,发生了一个小小的插曲。一个机场工作人员对着人群喊道:Is the Chinese here?俄式英语的发音我就不评价了。等我意识到她在喊我的时候,一个高大的俄罗斯人已经冲到我的面前了。我怯怯的应了声。心里很为忐忑,还以为犯了俄罗斯的的法律了,心想会不会被遣送回国阿。当真要被愚一把?
    结果表明,一切的猜想和担心都是多余的。原来是一位要去塞浦路斯的中国夫人的飞机要在当地时间第二天上午9点多起飞,现在还不能换登机牌,必须在机场等一个晚上,而她又不会英文,所以交流上有了障碍,而我则有幸第一次扮演了翻译的角色。开始对自己的口语建立起一点小小的信心了。安顿好她,交待了有关注意事宜后,便一个人拖着行李在机场逛游。机场没啥可看的,最吸引我的,莫过于Vodka了。早就听说Vodka的大名,如雷贯耳,我想这正是欧罗巴人种彪悍的民风的集中体现吧。
     However,在等待了5个小时之后,又登上了去苏黎世的飞机。本来座位是靠窗子的A座,上去以后发现已经有一位nice lady坐上了,问我能否换个座位,当然没有反对的意见了。坐在中间的B座位上。飞机比北京飞莫斯科的飞机要小很多,大概总共做了不到50个人。最后身旁的C座上来了一位German girl。欧洲人给我的影响似乎都是通晓多国语言,这位German就是有一半德国血统,一半俄罗斯血统,学习的还是法语,德语,俄罗斯语。英语更是没有问题。3个小时的旅途在交谈中很快就度过了。这使我原本对未来异国生活的不安和焦虑得到了一丝缓解,对自己用非母语交流也树立了些许自信。
    下了飞机,已经是当地时间晚上22:15了,虽然飞机晚起飞了半个小时,但却仍然准时到达了。入境比我想象的要简单得多,只是在护照上盖个章,连行李都没有检查,2分钟而已。为了赶上最后一班火车,我拿了行李直奔火车站。瑞士的地头很小,火车站和北京的地铁差不多,不过可以不买票,直接跳上去,再补票。火车站上的时刻表实在是让我疑惑了半天,一黄一白,完全没搞懂(后来才明明白,黄色代表出发时间,白色代表到达时间)。最后还是决定跳上去Bern的火车。到了Bern以后,已经错过了去Fribourg的火车。无奈之下,只有在火车站等了5个小时,第二天凌晨又跳上去Fribourg的车。
    到Fribourg后,教授和夫人把送到公寓,设备很简单,但对我已经足够了。只是不能上网,很遗憾。先不管,有张床就足够了。毕竟已经有近30小时没有好好睡觉了,什么都不管了,先睡下再说。

    写在前面

    转眼已经来到这里一周了,开始逐渐要适应这里的生活。这一周经历了很多以前所没有经历过的事情。因本人的抒情能力有限,只能以叙事方式来记录这些天记录一下见闻了。严重向neo学习和借鉴记流水账的经验。
    P.S.打算在上学期期末写完的Hibenate重写入门教程的计划,因为时间上的原因搁浅了(其实还是因为俺太懒了),还有就是第一篇写得太滥了,又不知道如何排版,所以作罢。(埃,怎么一点毅力都没有啊。。)