Java:如何检查程序是否已正确启动?
我正在开发一个小型Java jar应用程序,用于使用BaseX服务器将数据存储在file.xml中。 首先,在主程序启动之前,我需要正确启动并激活Basex服务器。下面是我的工作: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
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:进程未退出”…我希望服务器在主程序使用的范围内运行如果程序还没有退出,唯一的方法就是检查输出。好的,这就是我要做的。谢谢:)