我在运行时类中调用exec方法的jsp脚本中有一个execute(String cmd)。从jsp脚本调用lynx
它可以在我调用本地命令时使用,如存储在服务器上的php脚本。例如:/ usr/bin/php/path/to/php/script arg1 arg2
所以我想我的执行命令没问题,因为它正在处理这个问题。
现在,当我尝试调用基于文本的web浏览器lynx时,它不起作用。
如果我把它在一个终端,它工作正常: 在/ usr/bin中/猞猁突降-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;
}
嗯好吧,你认为它会工作,如果我只是删除缓冲区读取,只是调用exec方法?因为我实际上不需要看到结果... 我会看看你发布的链接,谢谢你的帮助! – Piero 2010-05-18 11:48:11
我认为缓冲可能会导致两端阻塞,这取决于任何一方的内部实现。这可能是Javadocs“及时”阅读的意思。我肯定会尝试摆脱缓冲,甚至可能用'(while in.read()!= -1){}'替换整个事物? – 2010-05-18 11:53:22
它仍然无法正常工作... -/ 我只想调用以下命令:/ usr/bin/lynx -dump -accept_all_cookies'http://www.someurl.net/?arg1=1&arg2=2' 从一个jsp脚本... 为什么Java/Jsp总是如此挑剔愚蠢的东西....我永远不会喜欢它! php规则! :-p – Piero 2010-05-18 12:50:28