2009-09-10 4 views
0

Я не совсем уверен, как я могу это объяснить, но здесь идет:Выполнение сценария внутри метода с BeanShell

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

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

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

ответ

1

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

Java Scripting Programmer's Guide объясняет, как импортировать классы Java в ваш скрипт.

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

+0

Спасибо, я не знал о методе положить в классе ScriptEngine. Я считаю, что это решит мои проблемы до сих пор. –

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); 
    } 
} 
Смежные вопросы