使用BeanShell在方法内执行脚本

时间:2009-09-10 21:26:11

标签: java scripting beanshell

我不确定如何解释这一点,但这里有:

我希望能够将一些命令“插入”到我的代码中将从外部文件加载的部分。为了解析和执行这些命令,我​​可能不得不使用像BeanShell的eval方法这样的脚本。问题是它似乎没有识别它内部的实例/方法。作为一个非常基本的例子,我想做一些像

这样的事情
    public void somethingHappens()
    {
        Foo foo = new Foo();
        Interpreter i = new Interpreter();
        i.eval("print(foo.getName());");
    }

这可能吗?我应该使用其他脚本工具吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是1.6,则可以使用内置的JavaScript支持。

Java Scripting Programmer's Guide解释了如何将Java类导入脚本。

article中的代码示例9解释了如何将对象传递到脚本的范围。

答案 1 :(得分:0)

使用beanshell,这是你可以尝试的东西

package beanshell;

import bsh.EvalError;
import bsh.Interpreter;

public class DemoExample {

    public static void main( String [] args ) throws EvalError  {
        Interpreter i = new bsh.Interpreter();
        String usrIp = "if(\"abc\".equals(\"abc\")){"
                + "demoExmp.printValue(\"Rohit\");"
                + "}";

        i.eval(""
                + "import beanshell.DemoExample;"
                + "DemoExample demoExmp = new beanshell.DemoExample();"
                + ""+usrIp);
    }

    public static void printValue(String strVal){
        System.out.println("Printing Value "+strVal);
    }
}