Frage

Ich bin nicht wirklich sicher, wie ich das erklären kann, aber hier geht:

Ich möchte in der Lage sein, einige Befehle in mehr Teile meines Codes auf „Einfügen“, die aus externen Dateien geladen werden. Analysieren und diese Befehle auszuführen, muss ich vermutlich einige scripting wie Beanshell des eval-Methode verwenden. Das Problem ist, dass es nicht die Instanz / Methode ist es scheint innerhalb der zu erkennen. Als ein sehr einfaches Beispiel, ich mag, wie etwas tun

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

Ist das möglich? Sollte ich andere Scripting-Tools?

War es hilfreich?

Lösung

Wenn Sie 1.6 verwenden, können Sie das in JavaScript-Unterstützung gebaut verwenden.

Das Java Scripting Programmierhandbuch erklärt, wie Java-Klassen in Ihrem Skript importieren.

Codebeispiel 9 in diesem Artikel erklärt, wie passieren Objekte in den Anwendungsbereich des Skripts.

Andere Tipps

Mit Beanshell, das ist etwas, das Sie versuchen können,

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top