用Java启动Windows服务
我正试图用这个启动java中的windows服务用Java启动Windows服务,java,windows-services,Java,Windows Services,我正试图用这个启动java中的windows服务 public static void main(String[] args) throws IOException { String startCom = "net start"; String startProc = "\"C:/Program Files/Common Files/Apple/Mobile Device Support/bin/AppleMobileDeviceService.exe\"";
public static void main(String[] args) throws IOException {
String startCom = "net start";
String startProc = "\"C:/Program Files/Common Files/Apple/Mobile Device Support/bin/AppleMobileDeviceService.exe\"";
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(startCom + startProc);
System.out.println("Starting It");
}
它运行时没有异常,但不会启动服务。我做错了什么
net start“Adobe Acrobat更新服务”
您可以通过在命令窗口(打印所有已注册服务的列表)上运行net start
或通过单击开始按钮,键入services.msc
并按Enter键在服务控制面板中查找服务来查找服务名。如果服务名称不明确,可以在“服务”控制面板中右键单击该服务,然后单击“属性”以确认该服务的可执行文件Process.getOutputStream()
和Process.getErrorStream()
)。它们可能包含诊断信息;但更重要的是,如果缓冲区在进程
仍向其输出时填满,则进程
将挂起public static void main(String[] args) throws IOException {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd start /c C:/Program Files/Common Files/Apple/Mobile Device Support/bin/AppleMobileDeviceService.exe");
System.out.println("Starting It");
看起来您的main()已退出,因此您的服务将终止。在这种情况下,您需要使用
sc create "servicename" binpath="path",
然后从
sc start "servicename.
也就是说,service.exe仍然需要作为Windows服务安装。您是否尝试使用proc.getOutputStream和proc.getErrorStream?@skaffman:Java服务包装器允许您启动现有的Windows服务?我似乎在它的.Read列表中找不到。如果使用Runtime.exec()方法签名,请确保在“start”和服务名称之间包含空格。如果使用其他方法签名之一,则可执行文件名将为
net
,参数将为start
和服务名。大家好:感谢帮助,仍然不起作用,我尝试了net start,但命令行中的名称表示其无效名称,正在查找可执行文件(也不起作用)。我想这就剩下processbuilder了?getErrorStream返回java.io。FileInputStream@21b6d,仍在尝试查找…直接在命令行上运行net start SERVICENAME
是否会遇到相同的错误?关于您提到的最后一个错误,您将无法直接将其作为字符串使用——您将希望像从FileInputStream或其他InputStream读取时一样读取错误流的内容:您好,Rob,是的,它说的是无效名称,因此我切换回使用此进程proc=rt.exec(“net start\”C:/Program Files/Common Files/Apple/Mobile Device Support/bin/AppleMobileDeviceService.exe\“”);发生了系统错误123。文件名、目录名或卷标语法不正确。这一定与我如何转义到服务的路径有关,但到目前为止还没有任何效果……请记住,Windows对路径不使用/
,而是使用\(您必须以Java字符串文字转义)。net start“C:\Program Files\Common Files\Apple\Mobile Device Support\bin\AppleMobileDeviceService.exe”
是否在命令行上工作?首先确保可以在命令行上运行该命令,然后让Java执行相同的命令。