0

我无法弄清楚 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

调试这些东西我不知道出了什么问题,因为它确实执行了语句,缓冲区没问题,但输出本身没有执行。

怎么了?

4

1 回答 1

0

我找到了问题的原因。最后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();
于 2015-11-28T05:30:51.567 回答