Ausführen von Skripts innerhalb Methode mit Beanshell
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?
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);
}
}