zoukankan      html  css  js  c++  java
  • swt生成、jar可执行包生成.exe可执行文件(giter)

    http://tomfish88.iteye.com/blog/1074786

    ——————————————————————————————————————————————————————————

    最近看了有关swt生成exe文件的有关内容,现将自己的一点经验分享下:

    由于很多的程序是在windows下面运行的,所以很多java开发的应用程序需要打包成可执行文件。

    1、生成可执行jar包

    其实方法有很多,主要有以下几种:

    利用工具生成,如在eclipse中添加插件fat jar等(百度下,很多的),

    也可以用eclispe的export直接导出。

    最直接的方法就是用jar命令直接打包了,但是要将manifest.mf加入

    到要打包的主目录下,然后用命jar cvfm yourjarname.jar manifest.mf yourmulu,就可以得到可执行的

    jar包了(前提是你的系统jre配置正确,在windows下面默认是javaw执行jar包的),manifest.mf中主要设

    置了Main-Class: 也就是你的启动类,如下:   Manifest-Version:1.0 Main-Class:your.class Created-

    By:1.3.0(SunMicrosystemsInc.) 。
    注意:在打包swt应用程序时,windows所需的动态连接文件需要放在所生成jar包的同一目录下,或者在

    path路径里面设置好,否则会出现错误。

    2、生成exe文件

    推荐用exe4j,下载地址:http://www.sstc.org.cn/Components/DetailView.aspx?id=1f30ec33-a275-4d36-b075-c1c5b525f2ab&typename=download

    这个用起来比较简单,不过是E文。
    注意:icon的图片格式就可以了,另外需要将所用到的外部jar加入到classpath中。jdk中的就不需要加了


    3、生成安装程序

    推荐用install4j,也是E文的,也是不错的安装程序,不过比较复杂些,hehe

     

     

     

     

    SWT的介绍(附加:Eclicpse3.1.1下配置SWT,打包发布SWT程序,转EXE一条龙过程记录)

    一、SWT的介绍

     

    SWT(Standard Widget Toolkit)

    Standard Widget Toolkit是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。
       在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit). 虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。
       为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生 应用程序的外观相似。虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并 且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。
      IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。
      为了方便开发SWT程序,在SWT基础上又创建了一个更易用、功能强大的图形包“JFace”。然而,JFace并不能完全覆盖SWT的所有功能,所以编程时SWT、JFace都会要用到,但是一般来说,能用JFace的组件就最好不要用SWT的。
       SWT本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或许是无心插柳,或是有意为之,至今为止,SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和SWING。目前SWT已经十分稳定。 这里指的稳定应该包含两层意思:
      一是指性能上的稳定,其中的关键是源于SWT的设计理念。SWT最大化了操作系统的图形构件API,就是说只 要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。可以看 出SWT的性能上的稳定大多时候取决于相应操作系统图形构件的稳定性。

       另一个稳定是指SWT API包中的类、方法的名称和结构已经少有改变,程序员不用担心由于Eclipse组织开发进度很快(Eclipse IDE每天都会有一个Nightly版本的发布),而导致自己的程序代码变化过大。从一个版本的SWT更新至另一版本,通常只需要简单将SWT包换掉就可 以了。

     

     

    二、Eclicpse3.1.1下配置SWT,打包发布SWT程序,转EXE一条龙过程记录

    Eclipse下安装SWT
    我这里用的是1.1.0.1,并且页面上就有推荐的Eclipse3.1.1,EMF,GEF。都下载了!
    2.按照Eclipse安装插件的方法,安装SWT,EMF,GEF。
    3.如果不出意外,就可以正常使用了!
    这里有一个建议:最好使用纯的Eclipse,我开始用WTP版的,怎么配置也不行。
    可以建立Visual Class,但是不能可视化添加控件,或者看不到控件的属性,或者Text,TextArea控件无法添加。后来按照以上方法,重新来了一次,OK了!
    二打包发布SWT程序
    1.因为需要SWTjar.但是Eclipse3.1.1配合的的SWT不是通过SWT.jar发布的!是org.eclipse.swt.win32.win32.x86_3.1.0.jar。里面包括了JINI的DLL和SWT类文件。
    需要下载
    这里有SWT.jar,和3个DLL,把他们解压缩出来,备用!
    2.通过Eclipse的导出功能,生成一个可执行的jar,MANIFEST.MF文件选择由Eclipse生成,并且保存到项目中。
    3.上面2的步骤,只是为了得到MANIFEST.MF文件。下面修改一下这个文件。
    加上 Class-Path SWT.jar
    如果还有其他的jar,用空格分开,加到后面
    4.再生成一次jar,MANIFEST.MF选择修改后的。
    5.将打包的jar,SWT.jar,3个DLL放到一个文件夹下,双击可执行的jar,程序运行!
    三jar转EXE
    1.打开JSmooth0.9.7。
    2.选择skeleton,在skeleton properties中先把Launch java app in the exe process,Debug console选中。可以查看生成EXE文件执行过程信息。
    3.选择Executable.
    选择生成的EXE文件存放位置。
    选择EXE文件图标
    设置当前路径,选择要转换的jar文件所在文件夹
    4.选择Application
    设置Main Class,可执行jar中的Main Class注意写类全名
    设置Application Argument,如果需要传入参数,写到这里
    设置Embedded jar: 可执行的jar
    设置Classpath:SWT.jar 如果有其他的继续添加
    5.选择JVM Selection。默认吧。
    6.JVM Configuration:
    可以设置java properties,内存使用
    7.点齿轮。生成!看是否有错误。
    8.EXE执行需要的文件:EXE,3个DLL,SWT.jar
    把他们考到其他目录,一样可以执行!
    9.去掉skeleton properties中的Launch java app in the exe process,Debug console选项。
    重新生成。应该OK了!
  • 相关阅读:
    自定义CopyOnWriteHashMap
    NIO中Buffer缓冲区的实现
    TOMCAT原理详解及请求过程
    XSS的原理分析与解剖
    mysql分页查询优化
    java如何正确停止一个线程
    Centos搭建ElasticSearch
    redis集群原理
    Idea-每次修改JS文件都需要重启Idea才能生效解决方法
    java 加密 解密 Illegal key size
  • 原文地址:https://www.cnblogs.com/cuizhf/p/3721166.html
Copyright © 2011-2022 走看看