欢迎来到iCOLIN的Blog

大地春如海,男儿国是家,龙灯花鼓夜,仗剑走天涯

icolinID:iCOLIN
70260次访问,排名1398好友0人,关注者0
iCOLIN的文章
原创 17 篇
翻译 0 篇
转载 72 篇
评论 33 篇
iCOLIN的公告
 
“这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;人们正在直奔天堂,人们正在直奔地狱。”
最近评论
vvukqr:wow power leveling
vvukqr:wow power leveling
vvukqr:wow power leveling
phpliu:麒麟才7000W难怪了,你要是投入70Y的话肯定可以达到90%的自主只是产权了。
waynewang:我决不买不支持linux的电脑!
文章分类
收藏
    相册
    过去属于死神
    友情链接
    蓝色网际的 Blog
    沧海一粒粟的小屋
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 把java程序作成windows EXE程序或windows服务---经典总结收藏

    新一篇: sed的神奇 | 旧一篇: 字符串操作

    把java程序作成windows EXE程序或windows服务---经典总结

    (1)制作WINDOWS EXE程序

        java做成window的exe程序或者服务程序实在是吃饱撑的,有点变态,但是如果你不想起在一台服务器的后台程序,被哪个笨蛋不小心给关了,或者人家把进程中的java给杀了,那就有必要照着下面我说的方法去做了:  

     borland不公开的一个使用技巧,能够通过jbuilder来制作exe文件来启动java文件。jbuilder并不支持本地编译机制。但是有一个隐藏的技巧可以让你从可执行文件来启动java程序,可以出现或者不出现console窗口。想做到这些,需要jbuilder的bin目录下的这些文件:
    jbuilder.exe (带DOS窗口)
    jbuilderw.exe (不带DOS窗口)
    jbuilder.config
    jdk.config


      “jbuilder.exe”是一个通用的可执行外壳文件,用以启动java程序,”jbuilderw.exe“好像是javaw.exe一样,它把”jbuilder.exe”包装起来,但是运行时候不显示那个console的窗口。使用这些文件的关键是文件名。“jbuilder.exe”查找一个文件叫”jbuilder.config”的配置文件,里面包含了运行java程序的必须信息。同样的”jbuilderw.exe”查找”jbuilder.exe”来启动不带console窗口的java程序。

      如果把jbuilder.exe重命名为”smsDialTest.exe”,那”smsDialTest.exe”将去寻找”smsDialTest.config”配置文件,同样”jbuilderw.exe”被重命名为”smsDialTestw.exe”,它会去寻找”smsDialTest.exe”文件。

          所以,我们只要把jbuilder .exe,jbuilerw.exe,jbuilder.config改名成相应的文件名,在jbuilder.config里面指定主
    类和类路径,就能够通过执行jbuilder.exe(或者被改名后的exe文件)来启动java应用程序了。  

      设置jdk.conifg中的"javapath",例子:“javapath ../jdk1.5/jre/bin/client/jvm.dll”

          设置smsDialTest.config:

          # +-----------------------------------------------------+
    # |                                                     |
    # | This is the configuration file for the smsDialTest  |
    # |                                                     |
    # |   Do NOT make modifications without maintaining a   |
    # |      backup copy.  See config_readme.html for a     |
    # |      description of the recognized directives.      |
    # |                                                     |
    # +-----------------------------------------------------+

    # Read the shared JDK definition
    include jdk.config

    # Tune this VM to provide enough headroom to work on large
    # applications
    vmparam -Xms128m
    vmparam -Xmx512m

    # Put the Light AWT wrapper and various JDK fixes on the boot path
    addbootpath ../image


    # Add all JAR files located in the patch, lib and lib/ext directory
    addjars ../lib
    addjars ../classes

     

    # Activate the shell integration
    socket 8888

    # Add all the configuration files located in the lib/ext directory

     

    # JBuilder needs to have access to the environment
    exportenv

    # Start smsDialTEST using the main class
    mainclass smsdialtest.gui.SmsDialTestMainFrame

    (2)把JAVA程序做成windows服务程序

    我试过把JAVA做成EXE,然后再做成windows服务,但是问题出来了,没地方把环境变量以及很多参数设置进去。

    最后,用“java service  Wrapper”来搞定这个问题。

    Wrapper 下载页面
       http://sourceforge.net/project/showfiles.php?group_id=39428

      最新的是3.1.2  以下例子都是在此版本下进行
      环境:Win2003server + JDK1.5 + Wrapper3.1.2


      配置wrapper.conf文件>
        
    #********************************************************************
    # Wrapper Properties
    #********************************************************************
    # Java Application
    wrapper.java.command=E:/project/developIDE/project/unicomsms/dialtest/jdk1.5/bin/java

    # Java Main class.  This class must implement the WrapperListener interface
    #  or guarantee that the WrapperManager class is initialized.  Helper
    #  classes are provided to do this for you.  See the Integration section
    #  of the documentation for details.
    wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

    # Java Classpath (include wrapper.jar)  Add class path elements as
    #  needed starting from 1
    wrapper.java.classpath.1==%PATH%
    wrapper.java.classpath.2=../lib/wrapper.jar
    wrapper.java.classpath.3=../lib/*.jar
    wrapper.java.classpath.4=../classes
    wrapper.java.classpath.5=../conf
    wrapper.java.classpath.6=../log


    # Java Library Path (location of Wrapper.DLL or libwrapper.so)
    wrapper.java.library.path.1=../lib
    wrapper.java.library.path.2=../jdk1.5/jre/lib/ext/win32com.dll
    wrapper.java.library.path.3=../jdk1.5/jre/bin/win32com.dll
    # Java Additional Parameters
    #wrapper.java.additional.1=

    # Initial Java Heap Size (in MB)
    #wrapper.java.initmemory=128

    # Maximum Java Heap Size (in MB)
    #wrapper.java.maxmemory=512

    # Application parameters.  Add parameters as needed starting from 1
    wrapper.app.parameter.1=smsdialtest.util.SmsServerUtil

    #********************************************************************
    # Wrapper Logging Properties
    #********************************************************************
    # Format of output for the console.  (See docs for formats)
    wrapper.console.format=PM

    # Log Level for console output.  (See docs for log levels)
    wrapper.console.loglevel=INFO

    # Log file to use for wrapper output logging.
    wrapper.logfile=../log/wrapper.log

    # Format of output for the log file.  (See docs for formats)
    wrapper.logfile.format=LPTDM

    # Log Level for log file output.  (See docs for log levels)
    wrapper.logfile.loglevel=INFO

    # Maximum size that the log file will be allowed to grow to before
    #  the log is rolled. Size is specified in bytes.  The default value
    #  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
    #  'm' (mb) suffix.  For example: 10m = 10 megabytes.
    wrapper.logfile.maxsize=0

    # Maximum number of rolled log files which will be allowed before old
    #  files are deleted.  The default value of 0 implies no limit.
    wrapper.logfile.maxfiles=0

    # Log Level for sys/event log output.  (See docs for log levels)
    wrapper.syslog.loglevel=NONE

    #********************************************************************
    # Wrapper Windows Properties
    #********************************************************************
    # Title to use when running as a console
    wrapper.console.title=增值业务综合网管业务拨测客户端软件

    #********************************************************************
    # Wrapper Windows NT/2000/XP Service Properties
    #********************************************************************
    # WARNING - Do not modify any of these properties when an application
    #  using this configuration file has been installed as a service.
    #  Please uninstall the service before modifying this section.  The
    #  service can then be reinstalled.

    # Name of the service
    wrapper.ntservice.name=服务名字

    # Display name of the service
    wrapper.ntservice.displayname=服务名字

    # Description of the service
    wrapper.ntservice.description=服务名字

    # Service dependencies.  Add dependencies as needed starting from 1
    wrapper.ntservice.dependency.1=

    # Mode in which the service is installed.  AUTO_START or DEMAND_START
    wrapper.ntservice.starttype=AUTO_START

    # Allow the service to interact with the desktop.
    wrapper.ntservice.interactive=false

      把wrapper-windows-x86-32-3.2.1\src\bin目录下的,几个文件COPY到你的BIN目录下,把他们的.bat.in扩展名,改为.bat就可以了。
    App.bat.in//手工启动你的程序,带着DOS窗口,一开始你要用这个文件测试你的环境是否搭好了
    InstallApp-NT.bat.in//安装服务程序,安装成功后会在WINDOWS服务中显示出你的服务程序
    UninstallApp-NT.bat.in//卸载服务程序。
    wrapper.exe//wrapper主程序

       把wrapper-windows-x86-32-3.2.1\lib目录下的wrapper.dll,wrapper.jar2个文件COPY到你的LIB目录下。

    最后,你先用App.bat测试你的程序,如果一切正常,就运行InstallApp-NT.bat.。这样制作的服务就成功了。 

    发表于 @ 2006年09月18日 12:14:00|评论(loading...)|编辑

    新一篇: sed的神奇 | 旧一篇: 字符串操作

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © iCOLIN