使用beanshell运行java代码

时间:2014-02-22 06:34:57

标签: java string beanshell

好的,所以我想使用beanshell解释器运行一些简单的代码,我想知道如何做一些像:

String s = "int x = 5; System.out.println(x);" 
Interpreter i = new Interpreter();
i.eval(s); //THIS

现在出现了真正的问题,我怎样才能将“mightval(s)”的输出转换回字符串,以便我可以在别处使用输出?

如果已经被问过或者某处有简单的文档,我道歉。我找不到任何有帮助的东西。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

使用以下解决方案解决。

    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

答案 1 :(得分:0)

根据文档,eval方法返回一个包含评估结果的Object。尝试将其强制转换为String。