獨立是Runtime.getRuntime()。exec()平臺獨立的嗎?
Runtime.getRuntime().exec("cmd /c");
平臺或我必須在參數傳遞平臺特定的命令?
感謝
什麼是Linux等價的命令cmd /c start /b java -jar
獨立是Runtime.getRuntime()。exec()平臺獨立的嗎?
Runtime.getRuntime().exec("cmd /c");
平臺或我必須在參數傳遞平臺特定的命令?
感謝
什麼是Linux等價的命令cmd /c start /b java -jar
調用Runtime.getRuntime()。EXEC()是在這樣的平臺獨立的,它會在每次啓動外部可執行文件平臺。當然,可執行文件本身必須存在,因此在Linux上啓動notepad.exe很可能不起作用(除非安裝了Wine和Notepad,但這是另一回事)。
在Windows上,輸入任何要輸入cmd.exe的內容(詳情請參見下文)。但要做到在Windows自動路徑查找,你需要做的是這樣
Runtime.getRuntime().exec("start iexplore.exe");
或
Runtime.getRuntime().exec("start my.pdf");
其打開與關聯的查看器PDF文件
。
在Linux上,你可以做任何事情,你會像猛砸殼做的,但你不能使用bash內建像管道運營商。您可以啓動程序並傳遞參數。
在Linux上啓動另一個Java實例,你可以使用:
Runtime.getRuntime().exec(new String[] {"java","-jar","myjar.jar"});
,如果它是不是在路徑中使用絕對路徑Java可執行文件。
感謝您的回覆。你能告訴我什麼是'cmd/c start/b java -jar jarfile.jar'的linux相當於 – 2012-02-22 16:23:25
添加了這個答案。 – Daniel 2012-02-22 16:27:17
它不是平臺獨立的。對於您所針對的每個操作環境,您需要一個外部命令版本。
Runtime.getRuntime().exec()
是獨立平臺。 cmd /c
是。你期望在Unix上運行cmd /c
?
所以,你如果你想運行外部命令的跨平臺計劃,以保持特定於平臺的命令。
謝謝。 Linux中的cmd/c start/b java -jar相當於什麼? – 2012-02-22 16:25:47
它取決於平臺。引述relevant javadoc(重點礦山)的部分:
該cmdarray此方法檢查是有效的操作系統命令。 哪些命令是有效的取決於系統,但至少該命令必須是非空字符串的非空列表。
當然不是,你正在執行一個shell命令。除非你沒有其他更乾淨的方式來做你想做的事情,否則我不建議你像使用Java那樣做。它違背了Java的便攜性目的。
CMD是Windows命令....並不適用於其他操作系統 – VirtualTroll 2012-02-22 16:19:13
你覺得呢? Java不能提供映射表,因爲它不可能在所有不同的OS之間進行映射。 – home 2012-02-22 16:19:39