Выход QuercusCompiledScript.eval не работает
Я не могу понять, в чем проблема с QuercusCompiledScript.eval. Запуск кода:
QuercusScriptEngine quercusScriptEngine = new QuercusScriptEngine();
quercusScriptEngine.eval("<?php echo 'hello uncompiled!\n'; ?>");
CompiledScript script = quercusScriptEngine.compile("<?php echo 'hello compiled!\n'; ?>");
script.eval();
System.out.println("that's all");
производит:
hello uncompiled!
that's all
Отладка этого материала Я не мог понять, что не так, поскольку он выполняет инструкцию, буферы в порядке, но сам вывод не выполняется.
Что случилось?
1 ответ
Я нашел причину проблемы. QuercusScriptEngine.eval()
явно делает writer.flush()
в конце ссылаясь на http://bugs.caucho.com/view.php?id=1914. Но QuercusCompiledScript.eval()
нет, по крайней мере, в quercus-4.0.39 (и в quercus-4.0.45 также). Обходной путь должен явно очистить, предоставляя Writer
:
CompiledScript script = quercusScriptEngine.compile("<?php echo 'hello compiled!\n'; ?>");
ScriptContext ctx = quercusScriptEngine.getContext();
Writer writer = new OutputStreamWriter(System.out);
ctx.setWriter(writer);
script.eval(ctx);
writer.flush();