Как захватить вывод из Beanshell - PullRequest
1 голос
/ 29 мая 2011

Я использую 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 голосов
/ 10 апреля 2012
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);
...