Команды CMD в других системах ОС

Возможный дубликат:
Выполните другую банку в программа на Java

Я делаю программу, которая запускается из документа Java и запускает документ Java. Я использую окна и

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

у меня работает нормально, но на Linux, Mac и т. д. это не сработает,

Может ли кто-нибудь помочь мне исправить другие системы ОС?

Примечание: у меня уже есть чек на ОС ...


person Tim Biesenbeek    schedule 13.01.2013    source источник
comment
Не запускайте программу таким образом, используйте ProcessBuilder.   -  person fge    schedule 14.01.2013


Ответы (3)


Linux:

Process pr = Runtime.getRuntime().exec(new String[]{"csh","-c","cd " + appdata +"\.gknl &&  java -jar launcher.jar");
person jco.owens    schedule 13.01.2013
comment
csh не установлен во всех системах Linux. Передо мной 4 системы, а у меня только 1. Если вы хотите быть уверены, что что-то будет работать, используйте sh. То есть на моем Ubuntu, Fedoras и моей системе Raspian. - person Erik Nedwidek; 14.01.2013
comment
Я устанавливаю csh везде, где мне нужно работать;) - person jco.owens; 14.01.2013

В Linux / Unix вы хотите использовать sh. В большинстве систем это будет связано с bash, zsh или csh.

Я на 95% уверен, что sh также есть на Mac, но мне нужно отключить Raspberry Pi и вернуть все обратно в Mac Mini для проверки.

person Erik Nedwidek    schedule 13.01.2013

cmd.exe - исполняемый файл оболочки Windows, вам потребуется использовать одну из оболочек Linux / Mac:

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

Если launcher.jar находится в пути к классам, должна быть возможность запустить основной класс приложения из вызывающего приложения, но без использования Process/ProcessBuilder.

person Reimeus    schedule 13.01.2013