Каков самый простой способ вызвать программу с помощью куска Java-кода? (Программа, которую я хочу запустить, является aiSee, и ее можно запустить из командной строки или из графического интерфейса Windows, а я нахожусь в Vista, но код также будет запущен в системах Linux).Запуск программы из Java кода
ответ
Посмотрите на Process и Runtime классы. Имейте в виду, что то, что вы пытаетесь выполнить, вероятно, не зависит от платформы.
Вот небольшой фрагмент кода, который может быть полезным:
public class YourClass
{
public static void main(String args[])
throws Exception
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("name_of_your_application.exe");
int exitVal = proc.exitValue();
System.out.println("Process exitValue: " + exitVal);
}
}
One вопрос в С.О. обсуждая похожие вопросы. Another один. And другой один.
Трудность, с которой вы столкнетесь, заключается в том, как заставить приложение знать путь. Вы можете использовать файл XML или конфигурации, но если вы используете эту ссылку, он должен объяснить, как запустить файл: http://www.javacoffeebreak.com/faq/faq0030.html
Я, вероятно, просто передал в качестве командной строки arg, как предложил Натан. Это неудобно, но это должно будет сделать – 2009-05-10 17:37:28
Вы можете получить экземпляр во время выполнения с помощью Runtime.getRuntime()
и вызвать exec
метод среды выполнения, с для выполнения программы в качестве аргумента.
Например:
Runtime runTime = Runtime.getRuntime();
Process proc = rt.exec("iSee.exe");
Вы также можете захватить вывод программы с помощью получения InputStream из процесса.
хорошо, спасибо; хотя, поскольку вывод является графическим (aiSee отображает графики из описаний GDL), я, вероятно, не буду обрабатывать его дальше; но хорошо знать, что у меня есть этот вариант – 2009-05-10 17:34:56
Вы также можете рассмотреть возможность передачи какого-либо аргумента вашей программе, чтобы облегчить поиск конкретной программы, которую вы хотите запустить.
Это могут быть аргументы командной строки, файлы свойств или системные свойства.
Хорошо, спасибо большое. Да, вы правы: он не может быть независимым от платформы (поскольку две системы, вероятно, будут иметь программу в другом месте). О чем я думал? – 2009-05-10 17:31:35