2010-03-24 77 views
1

我的Java类包含下列方法:Java的Windows服务与Procrun,StopMethod问题

公共静态无效的主要(字符串[]的argv)//启动服务

公共静态无效停止()//停止服务

我正在使用来自Apache Commons Daemon的Procrun将Java类设置为Windows服务。当我尝试停止服务时出现错误“[618 javajni.c] [error]静态方法'void main(String [])'in com/caphyon/service/JavaService not found”。问题是我正试图在服务关闭时调用stop方法,但它似乎用'void main(String [])'覆盖StopMethod。以下是我在设置服务时使用的停止和启动参数:

prunsrv.exe // US // JavaService --StartClass = com.caphyon.service.JavaService --StartMode = jvm --StartPath =“ C:\ JavaService“

prunsrv.exe // US // JavaService --StopClass = com.caphyon.service.JavaService --StopMode = jvm --StopPath =”C:\ JavaService“--StopMethod =”void停止()“

如何设置StopMethod prunsrv在关闭服务时调用?

回答

2

不应该将返回类型(即“void”)或parens放在--StopMethod参数的值中。所以,命令应该是:

prunsrv.exe //US//JavaService --StopClass=com.caphyon.service.JavaService --StopMode=jvm --StopPath="C:\JavaService" --StopMethod="stop" 
+0

我将参数更改为--StopMethod =“stop”,但同样的错误仍然显示在日志中。它似乎覆盖了--StopMethod的选项,并改为调用“main”。 “[618 javajni.c] [error]找不到类com/caphyon/service/JavaService中的静态方法'void main(String [])' – mcdon

+1

它看起来也像stop()方法需要字符串数组作为它的工作参数。 –

+0

你说得对,如果我将java中的方法更改为“public static void stop(String [] argv)”,那么它将正常工作。它看起来像procrun不喜欢无参数的Java函数。 – mcdon