使用beanshell运行java代码

使用beanshell运行java代码,java,string,beanshell,Java,String,Beanshell,好的,我有一些简单的代码,我想用beanshell解释器运行,我想弄清楚我如何做一些事情,比如: String s = "int x = 5; System.out.println(x);" Interpreter i = new Interpreter(); i.eval(s); //THIS 现在真正的问题出现了,我如何将“I.eval(s)”的输出转换回字符串,以便在其他地方使用该输出 如果已经有人问过这个问题,或者某个地方有简单的文档,我很抱歉。我找不到任何有用的东西 多谢各位 根据

好的,我有一些简单的代码,我想用beanshell解释器运行,我想弄清楚我如何做一些事情,比如:

String s = "int x = 5; System.out.println(x);" 
Interpreter i = new Interpreter();
i.eval(s); //THIS
现在真正的问题出现了,我如何将“I.eval(s)”的输出转换回字符串,以便在其他地方使用该输出

如果已经有人问过这个问题,或者某个地方有简单的文档,我很抱歉。我找不到任何有用的东西


多谢各位

根据文档,eval方法返回一个包含评估结果的对象。尝试将其转换为字符串。

使用以下解决方案解决

    Interpreter i = new Interpreter(); // Create a new BeanShell interpreter.
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    PrintStream ps = new PrintStream(baos); 
    PrintStream stdout = System.out; // Save System.out 
    System.setOut(ps); // Set the out to the PrintStream
    try{
        i.eval(s);
    }catch (Exception e){
        return "Error";
    }
    String out = baos.toString(); // Get the output
    System.setOut(stdout); // Reset the output

它为我返回空值。尝试“Object obj=(String)i.eval(String);”Object obj=i.eval(String);“String obj=(String)i.eval(String)”所有3个函数都返回nullGo,并在调试中查看i.eval(某物),而不将其强制转换为String。