我想提出的是從java文件運行程序,並運行一個Java文件。 我使用Windows和
Process pr = Runtime.getRuntime().exec(
"cmd /c start cmd.exe /c \"cd %appdata%\\.gknl && java -jar launcher.jar\""
);
作品對我來說很好,但在Linux,Mac等它不會工作,
有人可以幫我解決其他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系統?
注:我已經有一個操作系統的支票......
的Linux:
Process pr = Runtime.getRuntime().exec(new String[]{"csh","-c","cd " + appdata +"\.gknl && java -jar launcher.jar");
csh並未安裝在所有Linux系統上。我有4個系統在我面前,我只有1個系統。如果你想確保某些東西能起作用,你可以使用sh。這是在我的Ubuntu上,Fedora和我的Raspian系統。 –
我在任何需要做工作的地方安裝csh;) –
在的Linux/Unix要使用SH。這將在大多數系統上與bash,zsh或csh鏈接。
我95%確定sh也在Mac上,但我需要拔掉我的Raspberry Pi並將所有內容放回到我的Mac Mini中進行驗證。
cmd.exe
是Windows外殼程序可執行文件,則需要使用Linux/Mac的貝殼之一:
ProcessBuilder pb = new ProcessBuilder(
"sh", "-c",
"cd $appdata/.gknl && java -jar launcher.jar");
pb.start();
如果launcher.jar
是在類路徑中,它應該是可以從啓動主應用程序類然後調用應用程序而不使用Process/ProcessBuilder
。
不要像那樣運行程序,使用'ProcessBuilder'。 – fge