金曜日, 3月 05, 2010

javax.script.ScriptEngine 出力できない

スクリプトエンジン
java
ライブラリ:Rhino
スクリプト:JavaScript ECMAScript
javax.script

作っている最中にエラーが出る箇所があったのでメモ

ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine en = sem.getEngineByName(engineName);

ScriptContext context = new SimpleScriptContext();
ReplaceWriter outWriter = new ReplaceWriter(scriptMessage, "\n", "
\n");
ReplaceWriter errWriter = new ReplaceWriter(new ReplaceWriter( scriptMessage, "\n", "
"), ".*", "$0");

context.setWriter(new PrintWriter(outWriter));
//Writerを使うと標準出力(print println)でエラーが発生・・・PrintWriterを使う事で解決
context.setErrorWriter(new PrintWriter(errWriter));
//試してないがエラーもどうせ同じだろ~

en.setContext(context);
en.put("res", scriptResult);



GroovyはWriterでもエラーが出なかった。
ずーっと訳わからんかった。

だって、setWriter(Writer)ってなってるんだから、Writerを設定するだろ~


とりあえずエラーメッセージ


javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function print. (print#8) in print at line number 8