Home > Java > javaTutorial > How to Execute Java Code Stored in a String Variable?

How to Execute Java Code Stored in a String Variable?

Susan Sarandon
Release: 2024-10-24 19:27:29
Original
542 people have browsed it

How to Execute Java Code Stored in a String Variable?

Executing Code Stored in a String

Question:

Can one execute Java code that is stored within a String variable? Is it possible to convert such a String into a Java statement and run it?

Answer:

Using the Compiler API

As mentioned in a previous suggestion, the Compiler API enables you to compile and execute code dynamically. Here's how you can utilize it:

<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>
Copy after login

Using Beanshell

Alternatively, you can employ the Beanshell library as follows:

<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>
Copy after login

Note that Beanshell is no longer actively developed but remains reliable for production environments.

The above is the detailed content of How to Execute Java Code Stored in a String Variable?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template