使用 SC.EXE 将 Java jar 作为 Windows 服务启动

Yoo*_*kim 1 java

我想在 Windows Server 2008 R2 机器上启动 Minecraft Server as a Service。

此命令行工作正常:

c:\Windows\System32\java.exe -cp c:\Data\minecraft-server\minecraft-server.jar com.mojang.minecraft.server.MinecraftServer -Xms512M -X mx512M
Run Code Online (Sandbox Code Playgroud)

我使用以下 SC 命令创建了一个服务:

sc config MinecraftServer binPath= "c:\Windows\System32\java.exe -cp c:\Data\minecraft-server\minecraft-server.jar com.mojang.minecraft.server.MinecraftServer -Xms512M -Xmx512M"
Run Code Online (Sandbox Code Playgroud)

该服务已创建,当我启动该服务时,Windows 会启动它,但随后它返回一条消息:

服务未响应控制功能。

该服务确实启动了,但由于某种原因,该命令没有让系统知道它已启动。

有一些简单的东西我错过了,但我对 Java 不是很有经验,所以如果这里的任何人都可以提供我的指导,那将是非常受欢迎的!

Eva*_*son 6

您不能将任何旧的 EXE 作为服务运行。服务需要响应来自服务控制管理器的回调,并且将非服务 EXE 作为服务运行将导致您看到的消息。

您可以使用NSSM、SRVANY 或许多其他服务“包装器”程序中的任何一个工具来让非服务 EXE 作为服务运行。

在特定于 Java 的前端,WinRun4J应用程序充当“java.exe”的替代品,可用于将 Java 程序作为服务启动。当 Java 程序的命令行太长而服务控制管理器无法处理时,我使用了它。