У меня есть исполнение (String cmd) в скрипте jsp, который вызывает метод exec из класса Runtime.call lynx from jsp script
Он работает, когда я вызываю локальную команду, как php-скрипт, хранящийся на сервере. например:/usr/bin/php/path/to/php/script arg1 arg2
Итак, я думаю, что моя команда выполнения в порядке, так как она работает с этим.
Теперь, когда я пытаюсь вызвать lynx, текстовый веб-браузер, он не работает.
Если я называю это в терминале, он отлично работает: /USR/бен/рыси -dump -accept_all_cookies «http://www.someurl.net/?arg1=1&arg2=2»
Но когда я называю это из моей команды выполнить, ничего не происходит ...
Любая идея, почему?
Это мой метод выполнения:
public String execute(String cmd){
Runtime r = Runtime.getRuntime();
Process p = null;
String res = "";
try {
p = r.exec(cmd);
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
//out.println(res);
while ((line = br.readLine()) != null) {
res += line;
}
p.waitFor();
} catch (Exception e) {
res += e;
}
System.out.println(p.exitValue());
return res;
}
hmm ok, так вы думаете, что это сработает, если я просто удалю чтение буфера и просто вызову метод exec? Потому что мне действительно не нужно видеть результат ... Я посмотрю на ссылку, которую вы отправили в любом случае, спасибо за вашу помощь! – Piero
Я думаю, что буферизация может заставлять оба конца блокироваться в зависимости от внутренних реализаций с обеих сторон. Вероятно, это означает, что Javadocs означает «быстро» читать. Я бы, конечно, попытался избавиться от буферизации, возможно, даже заменил все на '(while in.read()! = -1) {}'? –
он все еще не работает ...: -/ все, что я хочу, это вызвать команду:/usr/bin/lynx -dump -accept_all_cookies 'http://www.someurl.net/?arg1=1&arg2=2' из сценария jsp ... Почему Java/Jsp всегда так придирчивы к глупым вещам ... Мне никогда не понравится! php правила! :-p – Piero