2013-01-13 91 views
0

可能重複:
Execute another jar in a java programCMD在其他OS系統命令

我想提出的是從java文件運行程序,並運行一個Java文件。 我使用Windows和

Process pr = Runtime.getRuntime().exec(
    "cmd /c start cmd.exe /c \"cd %appdata%\\.gknl && java -jar launcher.jar\"" 
); 

作品對我來說很好,但在Linux,Mac等它不會工作,

有人可以幫我解決其他OS系統?

注:我已經有一個操作系統的支票......

+3

不要像那樣運行程序,使用'ProcessBuilder'。 – fge

回答

0

的Linux:

Process pr = Runtime.getRuntime().exec(new String[]{"csh","-c","cd " + appdata +"\.gknl && java -jar launcher.jar"); 
+2

csh並未安裝在所有Linux系統上。我有4個系統在我面前,我只有1個系統。如果你想確保某些東西能起作用,你可以使用sh。這是在我的Ubuntu上,Fedora和我的Raspian系統。 –

+0

我在任何需要做工作的地方安裝csh;) –

0

在的Linux/Unix要使用SH。這將在大多數系統上與bash,zsh或csh鏈接。

我95%確定sh也在Mac上,但我需要拔掉我的Raspberry Pi並將所有內容放回到我的Mac Mini中進行驗證。

0

cmd.exe是Windows外殼程序可執行文件,則需要使用Linux/Mac的貝殼之一:

ProcessBuilder pb = new ProcessBuilder(
     "sh", "-c", 
     "cd $appdata/.gknl && java -jar launcher.jar"); 
pb.start(); 

如果launcher.jar是在類路徑中,它應該是可以從啓動主應用程序類然後調用應用程序而不使用Process/ProcessBuilder