簡體   English   中英

Java Runtime.exec運行Java問題

[英]Java Runtime.exec running java problem

我有一個簡單的服務器應用程序,我想在后台運行。 以下行對我有用:

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命令將能夠被銷毀,但是使用cmd我沒有運氣了。

您應該將命令拆分為一個數組,其中第一個參數是要運行的實際命令,其余所有都是類似參數的命令:

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

嘗試使用Java程序的絕對路徑。

對於銷毀: exec()返回一個java.lang.Process,您應該可以銷毀它。 如果不是,則必須實現某種類型的回調以關閉服務器,例如,偵聽特定prot上的shutdown命令。

服務器正在向stdout輸出某些內容,在縮短的命令版本中,它沒有輸出位置,因此在嘗試輸出一些數據時卡住了。 解決方案是將標准輸出通過管道傳輸到某些文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM