我创建了一个Java应用程序(运行无限循环)(包含许多Java类文件),它也使用log4j.jar
和`snmp4j.jar? 。为了运行应用程序,我需要提供一些输入参数,如下所示:
C:\APP>java myApp.class arg1 arg2 arg3 arg4 arg5 arg6
其中myApp.class
包含主处理程序。
此应用程序在命令行执行下正常工作。但是,我想为此应用程序创建一个Windows服务,以便它在PC启动时运行。此外,如果服务因任何原因而中断,它将在Windows服务工具下重新启动。
我尝试使用 JavaService 来执行以下命令:
C:\APP>JavaService.exe -install MyService "C:\java\jdk1.6.0.29\jre\bin\server\jvm.dll" -start myApp.class -params arg1 arg2 arg3 arg4 arg5 arg6
The MyService automatic service was successfully installed
我可以看到我的MyService
出现在“管理工具” - >“服务”
然而,当我开始MyService
时,它开始然后停止:(
Service dialog:
The MyService on Local Computer started and then stopped. Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.
任何人都知道为什么?
答案 0 :(得分:1)
也许您需要指定类路径?
您可以使用以下设置执行此操作:
-Djava.class.path={JDK_HOME}\lib\tools.jar;<your jar 1>;<your jar 2>
作为一个例子,我们使用脚本来安装JBoss,类似于这里讨论/显示的那个: https://community.jboss.org/wiki/JavaService
HTH
答案 1 :(得分:0)
首先,如果使用64位JVM,则必须使用64位JavaService。否则,您将在Windows事件日志中收到以下错误:
由于以下原因,LoadLibrary函数失败:LoadLibrary不是有效的Win32应用程序。
其次,使用JavaService的-out
和-err
参数从java代码中记录stdout和stderr。