2017-01-21 7 views
0

Ivは私のJavaプログラムにjythonを埋め込み、Pythonでスクリプトを書くことができるようにしています。しかし私は自分のpythonスクリプトの出力を自分のプログラムのjavaテキストボックスに出力したい。しかし、私はjythonエンジンの出力を埋め込む方法を見つけることができません:Jythonはすべての端末出力を出力/文字列として出力を割り当てます

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

    public class Main { 
     public static void main(String[] args) throws ScriptException { 
     ScriptEngine pyEngine = new ScriptEngineManager().getEngineByName("python"); 
     Object Pyoutput = pyEngine.eval("2*3"); 
     System.out.println(Pyoutput.toString()); 
     } 
    } 

私はこれを試して、evalの出力を得ました。

私はprint文から同じことをしようとすると、しかし、正しい
This outputs 6 

Object Pyoutput = pyEngine.eval("print('Hello World')"); 
System.out.println(Pyoutput.toString()); 

それはHello Worldのあるべきときに出力がnullです。 jythonによってeval/execされているスクリプトの出力/端末の内容全体を出力する方法はありますか?

答えて

2

エンジンScriptContextを使用してスクリプト用にWriterを設定できます。たとえば、次のように

ScriptEngine pyEngine = new ScriptEngineManager().getEngineByName("python"); 
StringWriter sw = new StringWriter(); 
pyEngine.getContext().setWriter(sw); 
pyEngine.eval("print('Hello World')"); 
System.out.println(sw.toString()); 

プリント

Hello World 
+0

パーフェクト!おかげさまで、私は、ストリームリーダーのさまざまなタイプを実装する唯一の結果でこれを行う方法を探しているGoogleで長い時間を過ごしました。もう一度感謝します:) – D3181

関連する問題