您的位置:首页 > 编程语言 > Java开发

可执行java程序,打包成jar,并注册为Windows的系统服务

2015-05-13 16:23 656 查看
为了实现把自己的可执行java程序,打包成jar,并注册为Windows的系统服务,

1,采用了一个中间件 wrapper-windows-x86-32-3.5.25 (来自SourceForge)

2,需要wrapper service其中的 bin\下的bat命令用于启动/安装/卸载/停止 自定义服务

、wapper.jar和wapper.dll文件作为引用库

、配置wrapper.conf(最关键,配置main入口类、引用的所有jar包、服务信息)

3,“wrapper.java.mainclass=”项配置为用户自己的入口类则需要在程序中继承WrapperListener

或保持原始值(org.tanukisoftware.wrapper.WrapperSimpleApp)则原始程序无需添加继承代码;

4,对于java机器人类,在注册为windows服务后,程序java.awt.Robot对于调用鼠标点击都无效了?

没有注册为服务,仅仅通过wrapper包装并没有影响自动移动、点击;

5,对于读写文件的自动任务,注册为服务、包装后 可以正常执行文件读写功能;

6,MANIFEST.MF的Main-Class: com.autoclick.AuClick在实现WrapperListener后,此jar包(auc2014.jar)找不到主类,不能再可执行;

方式二,即,继承WrapperListener的方式去注册windows服务,这种方式不需要配置MANIFEST.MF的Main-Class、Class-Path;

7,在使用wrapper的RunAuc2014-NT.bat开启、关闭Robot点击程序,这种情况下,最小化DOS窗口不影响鼠标移动/点击。

可以作为最理想的应用方式(不同于DOS窗口运行)

摘录:

JSW的使用有三种方式:

用WrapperSimpleApp class启动应用程序。这是使用JSW最简单的方式,也是推荐的方式。但使用这种方式有个问题,因为JSW是直接使用System.exit()退出JVM的,这等如使用者在应用程序运行期间直接按ctrl-c退出程序一样。如果应用程序在退出前需要执行clean up的话,需要自行登记shutdown hook,或不要使用这种方式。以这种方式配置JBoss的例子(Win32, Linux / UNIX)。

第二种方式是使用WrapperStartStopApp class。这种方式是给Tomcat之类的应用程序(即在一个类启动,但以另一个类结束的应用程序)。通常这类的应用程序都会在启动时打开一个server socket,用来等待要求程序结束的连接,当接收到要求结束的请求,“结束”类会被执行。而JSW就是在收到停止运行的要求时,直接执行这个“结束”类。以这这种方式配置Tomcat的例子(Win32, Linux / UNIX)。

第三种方式,也是最复杂,最灵活的一种方式,也是唯一一种需要编程的方式。这种方式要写一个实现WrapperListener接口的类。有些功能是这种方式独有的,例如直接在程序中接收及回应系统控制事件(如启动及结束)。但这也增加了程序的复杂程度。如果不需要这些功能的话,还是使用第一种方式比较方便。以这种方式配置的例子。

注:使用第一种方式最好不要使用JRE1.3.x或以上,因为1.2.x无shutdown hook的技持。如程序只能使用JRE1.2.x,就需要使用第二或第三种方式使用JSW。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: