我有一个使用 prcorun ( http://commons.apache.org/proper/commons-daemon/ ) 作为 Windows 服务器运行的 java 进程;不幸的是,我必须启动一个用 C/C++ 编写的外部遗留命令。
两者
Process myProcess = Runtime.getRuntime().exec(command);
和
Process myProcess = new ProcessBuilder(command, arg).start();
当 java 作为独立应用程序启动时运行良好,但当我将 java 作为服务启动时它会回复
command not found
还有
Process myProcess = Runtime.getRuntime().exec("dir");
command not found
我认为是 Windows 服务的问题。
有什么建议吗?
最佳答案
我会尝试做一个快速测试并在您的服务中打印 PATH 环境变量。当您将某些命令作为服务运行时,我通常会发现,PATH 可能不完全可用(这也可以解释为什么 DIR 不适合您)。如果是这种情况,在启动服务时,您必须确保 PATH 包括普通 bin 和您的 legacy bin。
关于java - 当 java 作为服务运行时从 java 启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638911/