4

最近、Ruby セッションの ScriptEngine 出力をリダイレクトしようとしたときに、奇妙な問題が発生しました。ScriptEngine に何を渡しても、常に stdout と stderr に出力されるようです。この投稿を見つけましたが、修正されたと書かれています。

https://scripting.dev.java.net/issues/show_bug.cgi?id=8

scriptContext.setWriter(outWriter);
scriptContext.setErrorWriter(errWriter);

ruby.setContext(scriptContext);
ruby.eval(...)

私は sbt を実行し、jruby-complete.jar の最新バージョンを使用していますが、それでも毎回 stdout に移動します。この問題は本当に解決されましたか?

eval(...)StringWriter も渡そうとしましたが、後で文字列を取り出そうとすると配列例外が発生します。

4

1 に答える 1

3

これはうまくいくようです(先週リリースされた1.6.1を使用しています):

    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("jruby");
    StringWriter sw = new StringWriter();
    PrintWriter pw = new PrintWriter(sw);
    engine.getContext().setWriter(pw);
    engine.eval("puts 'hello'");
    System.out.println("output: " + sw.getBuffer());
于 2011-04-18T19:32:51.063 に答える