Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top