可执行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。
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。
相关文章推荐
- Windows环境下注册Java程序为系统服务
- 将java程序注册为系统服务(wrapper.jar)
- 【详细】如何将Java源码打包成可执行的jar文件(windows&linux系统都是可以执行的)
- java Service Wrapper 将jar注册为windows系统服务
- 把Java程序打包成jar文件包并执行
- 怎样把任意exe程序注册成windows系统服务(手动注册服务)
- Windows下批处理执行java程序,读取lib下的所有jar包
- 将Java程序打包成可执行文件jar包,然后执行jar包,不引用外部包的情况
- 将Java程序打包成可执行文件jar包,然后执行jar包,引用外部包的情况
- Java Tomcat 注册为Windows系统服务
- 把Java程序打包成jar文件包并执行
- windows或者linux下执行java程序(.jar)
- 把Java程序打包成jar文件包并执行
- 把Java程序打包成jar文件包并执行
- 把Java程序打包成jar文件包并执行
- 把Java程序打包成jar文件包并执行
- Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例
- Java程序eclipse可以执行打包成jar后执行出错
- 将Java程序打包成jar并执行
- 把Java程序打包成jar文件包并执行的方法