Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java 动态编译

作者:颠峰神射   发布日期:2026-07-03   浏览:39

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.");
        }
    }
}

解释说明

  1. 定义源代码

    • 我们定义了一段简单的Java源代码字符串 sourceCode,它包含了一个名为 HelloWorld 的类,并且有一个 main 方法用于打印 "Hello, World!"。
  2. 写入临时文件

    • 使用 FileWriter 将源代码字符串写入一个名为 HelloWorld.java 的文件中。这样可以模拟实际的文件操作。
  3. 获取编译器

    • 使用 ToolProvider.getSystemJavaCompiler() 获取系统的Java编译器。如果编译器不可用(例如在某些JRE环境中),则会返回 null
  4. 编译源文件

    • 使用 compiler.run() 方法编译刚刚创建的 HelloWorld.java 文件。该方法返回一个整数表示编译结果:0 表示成功,非零值表示失败。
  5. 输出结果

    • 根据编译结果输出相应的消息,告知用户编译是否成功。

通过这种方式,我们可以在运行时动态地编译Java代码。

上一篇:java 两个list去重

下一篇:java求绝对值

大家都在看

java url decode

java判断是windows还是linux

java原始数据类型

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java常用的设计模式有哪些

java list 查找

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站