Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何检查程序是否已正确启动?_Java_Xml_Windows_Command Line_Command - Fatal编程技术网

Java:如何检查程序是否已正确启动?

Java:如何检查程序是否已正确启动?,java,xml,windows,command-line,command,Java,Xml,Windows,Command Line,Command,我正在开发一个小型Java jar应用程序,用于使用BaseX服务器将数据存储在file.xml中。 首先,在主程序启动之前,我需要正确启动并激活Basex服务器。下面是我的工作: Runtime runtime = Runtime.getRuntime(); if (isWindows(os)) { Process server = runtime.exec("cmd /C basexserver.bat"); System.out.println(server.waitFo

我正在开发一个小型Java jar应用程序,用于使用BaseX服务器将数据存储在file.xml中。 首先,在主程序启动之前,我需要正确启动并激活Basex服务器。下面是我的工作:

Runtime runtime = Runtime.getRuntime();

if (isWindows(os)) {
    Process server = runtime.exec("cmd /C basexserver.bat");
    System.out.println(server.waitFor());

}

else {
    if (isLinux(os)) {
        runtime.exec("basexserver");
    }
}

为了检查BaseXServer是否正确运行,我尝试检查waitFor方法返回的值,如果该值等于0,则该命令已成功执行,如果返回的值大于0,则发生错误。问题是这个方法总是返回1,但是命令“basexserver.bat”是正确的。为什么?

如果进程在启动后进入后台,您可以将
exitValue()
检查为零。其次,您可以使用方法
getErrorStream()
getInputStream()
附加错误和标准输出。并监视它们是否有错误消息。看一看流狼吞虎咽模式也,它可能是有用的。如果某个进程的输出未被消耗,则该进程可能会被卡住


谢谢您的回复,但我担心这不起作用,因为“basexserver.bat”启动的服务器在主程序关闭之前永远不会停止……因此我无法调用waitFor after Process server=runtime.exec(“cmd/C basexserver.bat”);否则,我的程序将阻塞,直到服务器停止,因此不可能使用它。在这种情况下,您必须监视错误流。制作一个regexp匹配器,它将在出现错误时向您发出警告。可能我弄错了…我需要检查的是命令是否已成功执行…我无法在启动baseX服务器后检查退出值,因为我会得到“java.lang.IllegalThreadStateException:进程未退出”…我希望服务器在主程序使用的范围内运行如果程序还没有退出,唯一的方法就是检查输出。好的,这就是我要做的。谢谢:)