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!