Как выполнять мои собственные команды на терминале из java-файла

Я пытаюсь создать проект eclipse на Java для запуска команд с помощью некоторых кнопок. Библиотеки Ros fuerte (эти, которые я хочу использовать) установлены правильно, и, конкретно, я пытаюсь запустить команду ros из файла Java, используя:

String cmd = "roscore";

Runtime rt = Runtime.getRuntime();

Process p = rt.exec(cmd);

Если я запускаю эту команду из текущего терминала, она работает, но если я делаю это из java-файла, у меня возникает проблема, потому что терминал не распознает команду.

java.io.IOException: Cannot run program "roscore": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at LaunchTerminal.main(LaunchTerminal.java:24)

Я думаю, что мне нужно добавить какой-то путь или что-то подобное, но я не нахожу информацию. Кто-нибудь знает, как это сделать?

Спасибо.


person user1679709    schedule 18.09.2012    source источник
comment
запустить программу с абсолютным путем.   -  person Jayan    schedule 18.09.2012
comment
возможный дубликат Выполнить внешнюю программу через терминал в Java   -  person codeling    schedule 18.09.2012


Ответы (2)


можно выполнять только обычные команды, такие как rm или cd ... на все остальные нужно ссылаться с полным путем контекста

person mbraunerDE    schedule 18.09.2012
comment
Спасибо! Теперь это работает, но терминал закрывается при выполнении команды. Можно ли держать открытым? - person user1679709; 18.09.2012
comment
почему вы хотите оставить его открытым? но вот хороший сайт java-tips.org/java-se-tips/java.util/ - person mbraunerDE; 18.09.2012
comment
Мне это нужно, потому что это программа (мастер), с которой связаны все остальные узлы Рос, поэтому мне нужно, чтобы она была открыта. - person user1679709; 18.09.2012
comment
это команда roscore, которую вы можете использовать везде в терминале? если да... я понятия не имею, почему это не работает... иначе... вы должны использовать полный путь и имя этого скрипта - person mbraunerDE; 18.09.2012

Если вы используете заводной дистрибутив, выполните следующие действия:

String cmd = "source /opt/ros/groovy/setup.bash && roscore";
person fatma    schedule 08.04.2013