Pergunta

Eu não sou realmente certo como eu posso explicar isso, mas aqui vai:

Eu quero ser capaz de "Inserir" alguns comandos em partes do meu código que serão carregados a partir de arquivos externos. Para analisar e executar estes comandos, eu presumivelmente tem que usar alguns scripts como método eval do BeanShell. O problema é que ele não parece reconhecer a instância / método é dentro de. Como um exemplo muito básico, eu quero fazer algo como

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

Isso é possível? Devo usar outras ferramentas de script?

Foi útil?

Solução

Se você estiver usando 1.6, você pode usar o construída em suporte JavaScript.

O Guia do Java Script Programador explica como importar classes Java em seu script.

Código exemplo 9 neste artigo explica como passar objetos em escopo do script.

Outras dicas

Usando beanshell, isso é algo que você pode tentar

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);
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top