Запуск программы из кода Java

Как проще всего вызвать программу из фрагмента кода Java? (Программа, которую я хочу запустить, называется aiSee, и ее можно запустить из командной строки или из графического интерфейса Windows; я работаю в Vista, но код также будет выполняться в системах Linux).


person Community    schedule 10.05.2009    source источник


Ответы (4)


Взгляните на Процесс и Классы времени выполнения. Имейте в виду, что то, чего вы пытаетесь достичь, вероятно, не зависит от платформы.

Вот небольшой фрагмент кода, который может быть полезен:

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);
    }
}

Один вопрос в S.O. обсуждение подобных вопросов. Еще. И еще один.

person Pablo Santa Cruz    schedule 10.05.2009
comment
Хорошо, большое спасибо. Да, вы правы: он не может быть независимым от платформы (поскольку две системы, вероятно, будут иметь программу в разных местах). Что я думал при этом? - person ; 10.05.2009

Вы можете получить экземпляр среды выполнения, используя Runtime.getRuntime(), и вызвать метод среды выполнения exec с командой для выполнения программы в качестве аргумента.

Например:

Runtime runTime = Runtime.getRuntime ();       
Process proc = rt.exec("iSee.exe");

Вы также можете захватить выходные данные программы, используя InputStream из процесса.

person nstehr    schedule 10.05.2009
comment
хорошо, спасибо; однако, поскольку вывод является графическим (aiSee отображает графики из описаний GDL), я, вероятно, не буду его обрабатывать дальше; но хорошо знать, что у меня есть такая возможность - person ; 10.05.2009

Трудность, с которой вы столкнетесь, заключается в том, как заставить приложение узнать путь. Вы можете использовать файл xml или файл конфигурации, но если вы используете эту ссылку, она должна объяснить, как запустить файл: http://www.javacoffeebreak.com/faq/faq0030.html

person James Black    schedule 10.05.2009
comment
Я, вероятно, просто передал аргумент командной строки, как предложил Натан. Неловко, но придется - person ; 10.05.2009

Вы также можете рассмотреть возможность передачи в вашу программу какого-либо аргумента, чтобы облегчить поиск конкретной программы, которую вы хотите запустить.

Это могут быть аргументы командной строки, файлы свойств или системные свойства.

person Nathan Feger    schedule 10.05.2009