QuercusCompiledScript.eval输出不起作用

时间:2015-11-28 03:14:48

标签: quercus

我无法弄清楚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 个答案:

答案 0 :(得分:0)

我找到了问题的原因。 QuercusScriptEngine.eval()最后明确指出writer.flush()引用http://bugs.caucho.com/view.php?id=1914。但是QuercusCompiledScript.eval()没有,至少在栎-4.0.39(以及栎-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();