Heim >Java >javaLernprogramm >Wie führe ich in einer String-Variablen gespeicherten Java-Code aus?

Wie führe ich in einer String-Variablen gespeicherten Java-Code aus?

Susan Sarandon
Susan SarandonOriginal
2024-10-24 19:27:29538Durchsuche

How to Execute Java Code Stored in a String Variable?

In einem String gespeicherten Code ausführen

Frage:

Kann man Java-Code so ausführen? wird in einer String-Variablen gespeichert? Ist es möglich, einen solchen String in eine Java-Anweisung umzuwandeln und auszuführen?

Antwort:

Verwendung der Compiler-API

Wie in einem früheren Vorschlag erwähnt, ermöglicht Ihnen die Compiler-API das dynamische Kompilieren und Ausführen von Code. So können Sie sie verwenden:

<code class="java">// Create a Java source code string
String javaCode = "...";

// Create a Java compiler instance
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

// Create a source code file from the string
JavaFileObject javaFile = new StringJavaFileObject("MyCode", javaCode);

// Compile the source code
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
Iterable<? extends JavaFileObject> compilationUnits = Collections.singletonList(javaFile);
compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call();

// Execute the compiled code
Class<?> clazz = Class.forName("MyCode");
Method method = clazz.getDeclaredMethod("myMethod");
method.invoke(null);</code>

Beanshell verwenden

Alternativ können Sie die Beanshell-Bibliothek wie folgt verwenden:

<code class="java">// Create a Beanshell interpreter and add the Java code to it
Interpreter interpreter = new Interpreter();
interpreter.eval(javaCode);

// Access the defined classes and methods in the interpreter
Class<?> myClass = interpreter.getClassLoader().loadClass("MyClass");
Method method = myClass.getDeclaredMethod("myMethod");
method.invoke(null);</code>

Beachten Sie, dass Beanshell nicht mehr aktiv weiterentwickelt wird, für Produktionsumgebungen jedoch weiterhin zuverlässig ist.

Das obige ist der detaillierte Inhalt vonWie führe ich in einer String-Variablen gespeicherten Java-Code aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn