Выход 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();
Другие вопросы по тегам