Выполнение скрипта внутри метода с BeanShell - PullRequest
0 голосов
/ 11 сентября 2009

Я не совсем уверен, как я могу это объяснить, но здесь идет речь:

Я хочу иметь возможность "вставлять" некоторые команды в части моего кода, которые будут загружаться из внешних файлов. Чтобы проанализировать и выполнить эти команды, я, вероятно, должен использовать некоторые сценарии, такие как метод eval BeanShell. Проблема в том, что он, похоже, не распознает экземпляр / метод, внутри которого он находится. В качестве очень простого примера я хочу сделать что-то вроде

    public void somethingHappens()
    {
        Foo foo = new Foo();
        Interpreter i = new Interpreter();
        i.eval("print(foo.getName());");
    }

Возможно ли это? Стоит ли использовать другие скриптовые инструменты?

Ответы [ 2 ]

1 голос
/ 11 сентября 2009

Если вы используете 1.6, вы можете использовать встроенную поддержку JavaScript.

Руководство по программированию Java Scripting объясняет, как импортировать классы Java в ваш скрипт.

Пример кода 9 в этой статье объясняет, как передавать объекты в область действия скрипта.

0 голосов
/ 17 июня 2017

Используя бобовую оболочку, это то, что вы можете попробовать

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);
    }
}
...