Java Windows 服务与 Procrun、StopMethod 问题

mcd*_*don 3 java windows-services procrun

我的 Java 类包含以下方法:

public static void main(String[] argv) //启动服务

public static void stop() //停止服务

我使用Apache Commons Daemon中的 Procrun将 Java 类设置为 Windows 服务。当我尝试停止服务“[618 javajni.c] [错误] com/caphyon/service/JavaService 类中的静态方法 'void main(String[])' 未找到”时,出现错误。问题是我试图在服务关闭时调用 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 stop()"

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

Rob*_*ser 5

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

prunsrv.exe //US//JavaService --StopClass=com.caphyon.service.JavaService --StopMode=jvm --StopPath="C:\JavaService" --StopMethod="stop"
Run Code Online (Sandbox Code Playgroud)

  • 看起来 stop() 方法需要将 String 数组作为参数才能工作。 (4认同)