2010-12-21 5 views
4

Ruby 세션의 ScriptEngine 출력을 리디렉션하려고 할 때 이상한 문제가 발생했습니다. ScriptEngine에 무엇을 넣든지 항상 stdout과 stderr로 인쇄하는 것 같습니다. 나는이 지위를 찾았지만, 그것이 고정되어 있다고 말한다. Jruby ScriptEngine 출력을 StringWriter로 리디렉션

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를 전달하려고 시도했지만 문자열을 나중에 꺼내려고하면 배열 예외가 발생합니다.

이 일 것으로 보인다

답변

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()); 
관련 문제