CMD команди в други операционни системи

Възможен дубликат:
Изпълнете друг jar в java програма

Правя програма, която се изпълнява от java документ и изпълнява Java документ. Използвам windows и

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