import javax.tools.*;
import javax.tools.JavaFileObject.Kind;
import com.sun.source.util.*;
import java.net.URI;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        JavaFileObject emptyFile = new SimpleJavaFileObject(
                URI.create("string:///A.java"), Kind.SOURCE) {
            @Override public CharSequence getCharContent(boolean i) { return ""; }
        };

        JavacTask task = (JavacTask) compiler.getTask(
                null, null, null, null, null, List.of(emptyFile));

        task.addTaskListener(new TaskListener() {
            @Override
            public void started(TaskEvent e) {
                try {
                    task.analyze();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });

        task.call();
    }
} 