我正在使用BaseX服务器在file.xml中为存储数据开发一个小的Java jar应用程序。 在开始之前,在主程序启动之前,我需要正确启动并激活Basex Server。所以这就是我的工作:
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”是正确的。为什么?
答案 0 :(得分:1)
如果进程在启动后进入后台,则可以将exitValue()
检查为零。其次,您可以使用方法getErrorStream()
和getInputStream()
来处理错误和标准输出。并监视它们的错误消息。看看流gobbler模式,它可能是有用的。如果没有消耗输出,某些进程可能会卡住。
https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html