Выполнение Nginx из Java-приложения - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь запустить HTTP-сервер nginx из Java-приложения, используя

Runtime.getRuntime().exec(command);

содержимое переменной команды:

/media/data/websites/php-desktop/bin/nginx/nginx/nginx -c "/tmp/conf/nginx.conf" -p "/media/data/websites/php-desktop/bin/nginx/"

команда должна запустить nginx с указанного пути, с файлом конфигурации после -c и со значением префикса после -p

проблема в том, что java не запускается, nginx просто падает, я пытался напечатать вывод процесса, но ничего не выводится.

Кроме того, когда я выполняю команду с любого терминала, она работает нормально. Примечание: я использую Ubuntu Linux, nginx, собранный из исходного кода с последней стабильной версией.

Ответы [ 2 ]

1 голос
/ 15 августа 2015

Поскольку

Runtime.getRuntime().exec(command);

эквивалентно

Runtime.getRuntime().exec(command, null, null);

Так что это не будет работать, поскольку массив аргументов равен нулю, а исполняемый файл - "/ media / data / website /* php-desktop / bin / nginx / nginx / nginx -c /tmp/conf/nginx.conf -p .... "1012 *

Runtime.getRuntime().exec(new String[] {
"/media/data/websites/php-desktop/bin/nginx/nginx/nginx", 
"-c", 
"/tmp/conf/nginx.conf", 
"-p", 
"/media/data/websites/php-desktop/bin/nginx/"});
0 голосов
/ 06 июня 2011

Попробуйте прочитать входной поток процесса.Примерно так ...

        Process p = Runtime.getRuntime().exec(command);  
        BufferedReader in = new BufferedReader(  
                            new InputStreamReader(p.getInputStream()));  
        String line = null;  
        while ((line = in.readLine()) != null) {  
            System.out.println(line);  
        }  

Редактировать: вместо этого попробуйте errorStream ... http://download.oracle.com/javase/6/docs/api/java/lang/Process.html#getErrorStream%28%29 (это, вероятно, где вы найдете ошибки!)

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...