Java实现字符串转换成可执行代码
时间: 2024-03-11 20:46:44 浏览: 30
Java中可以使用动态编译的方式将字符串转换成可执行代码。下面是一个简单的示例:
```java
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
public class StringToCode {
public static void main(String[] args) throws Exception {
String code = "public class HelloWorld { public static void main(String[] args) { System.out.println(\"Hello World!\"); } }";
String className = "HelloWorld";
// 将字符串写入到.java文件中
File sourceFile = new File(className + ".java");
try (PrintWriter writer = new PrintWriter(new FileWriter(sourceFile))) {
writer.write(code);
}
// 使用JavaCompiler将.java文件编译成.class文件
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getAbsolutePath());
// 使用URLClassLoader加载.class文件,并执行其中的main方法
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { new File("").toURI().toURL() });
Class<?> cls = Class.forName(className, true, classLoader);
Method mainMethod = cls.getMethod("main", String[].class);
mainMethod.invoke(null, new Object[] { null });
}
}
```
这个示例中,将字符串代码写入到一个名为"HelloWorld.java"的文件中,然后使用JavaCompiler进行编译,最后使用URLClassLoader加载并执行其中的main方法。