如何从Beanshell捕获输出

时间:2011-05-29 18:29:00

标签: java interpreter beanshell

我一直在使用BeanShell来解释只做一些计算然后输出到控制台的简单文件。事情是,我想抓住输出。这样System.out.println("test");我可以将"test"作为字符串放到其他地方。

我看过Interpreter.getOut(),但我还没有设法理解它的实际内容(文档没那么有用)。我尝试使用PrintStream抓取getOut(),然后打印其内容,但它是空的。搞乱之后我也尝试了以下内容:

Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
i.setOut(ps);
i.eval("System.out.println(\"test\");");
String out = baos.toString();

但那也是空的。

1 个答案:

答案 0 :(得分:0)

Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

System.setOut(ps);

try {
  //i.eval("System.out.println(\"test\");");
  i.source("c:\\htdocs\\test.bsh");
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

String out = "hello : "+baos.toString();
System.err.println(out);