我无法弄清楚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
调试这些东西我无法弄清楚错误是什么,因为它执行语句,缓冲区没问题,但输出本身没有执行。
有什么问题?
答案 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();