import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.io.FileWriter;
import java.io.IOException;
public class DynamicCompilationExample {
public static void main(String[] args) {
// 定义要动态编译的Java源代码
String sourceCode = "public class HelloWorld {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello, World!\");\n" +
" }\n" +
"}";
// 将源代码写入临时文件
try (FileWriter writer = new FileWriter("HelloWorld.java")) {
writer.write(sourceCode);
} catch (IOException e) {
e.printStackTrace();
}
// 获取系统默认的Java编译器
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
if (compiler == null) {
System.out.println("No Java compiler available.");
return;
}
// 编译Java源文件
int compilationResult = compiler.run(null, null, null, "HelloWorld.java");
if (compilationResult == 0) {
System.out.println("Compilation successful.");
} else {
System.out.println("Compilation failed.");
}
}
}
定义源代码:
sourceCode,它包含了一个名为 HelloWorld 的类,并且有一个 main 方法用于打印 "Hello, World!"。写入临时文件:
FileWriter 将源代码字符串写入一个名为 HelloWorld.java 的文件中。这样可以模拟实际的文件操作。获取编译器:
ToolProvider.getSystemJavaCompiler() 获取系统的Java编译器。如果编译器不可用(例如在某些JRE环境中),则会返回 null。编译源文件:
compiler.run() 方法编译刚刚创建的 HelloWorld.java 文件。该方法返回一个整数表示编译结果:0 表示成功,非零值表示失败。输出结果:
通过这种方式,我们可以在运行时动态地编译Java代码。
上一篇:java 两个list去重
下一篇:java求绝对值
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站