Java Runtime.exec运行Java问题

Java Runtime.exec运行Java问题,java,jar,exec,Java,Jar,Exec,我有一个简单的服务器应用程序,我想在后台运行。下面这句话对我很有用: Runtime.getRuntime().exec("cmd /c start java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\server.properties"); 但是它显示了cmd窗口,我无法销毁它。所以我

我有一个简单的服务器应用程序,我想在后台运行。下面这句话对我很有用:

Runtime.getRuntime().exec("cmd /c start java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\server.properties");
但是它显示了
cmd
窗口,我无法销毁它。所以我想用

Runtime.getRuntime().exec("java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\scIntegration.properties");
但它根本无法连接到服务器。那为什么呢


一个相关的问题。我如何结束这个过程?这是一个“不会结束”的服务器。因此,我必须杀死它,并且我假设,运行
java
only命令将能够被销毁,但是使用
cmd
我在这方面没有运气。

尝试使用java程序的绝对路径


对于销毁:
exec()
返回一个java.lang.Process,您应该能够销毁它。如果没有,您必须实现某种类型的回调以关闭服务器,例如,监听特定的prot以获取关机命令

您应该将命令拆分为一个数组,其中第一个参数是要运行的实际命令,其余所有参数都是类似命令的参数:

Runtime.getRuntime().exec(new String[] {"/usr/bin/java", "-jar", "..\\server\\server.jar" ...});

服务器正在向stdout输出某些内容,而在缩短的命令版本中,它没有输出位置,因此在尝试输出某些数据时被卡住。解决方案是通过管道将标准输出传输到某个文件。

我已经尝试了绝对路径。没用。我无法在服务器中实现任何东西,这就是Process.destroy()的问题所在。