Pregunta

No estoy realmente seguro de cómo puedo explicar esto, pero aquí va:

Quiero poder " insertar " algunos comandos en partes de mi código que se cargarán desde archivos externos. Para analizar y ejecutar estos comandos, presumiblemente tengo que usar algunos scripts como el método eval de BeanShell. El problema es que no parece reconocer la instancia / método en el que se encuentra. Como ejemplo muy básico, quiero hacer algo como

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

¿Es esto posible? ¿Debo usar otras herramientas de scripting?

¿Fue útil?

Solución

Si está usando 1.6, puede usar el soporte integrado de JavaScript.

La Guía del programador de scripts de Java explica cómo importar clases Java en su script.

Ejemplo de código 9 en este artículo explica cómo aprobar objetos en el alcance del script.

Otros consejos

Usando beanshell, esto es algo que puedes probar

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top