import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.ToolProvider;
import java.util.ArrayList;
import java.util.List;
import java.net.URI;

class Test{
    public static void main(String [] args) {
        SimpleJavaFileObject fileObject = new SimpleJavaFileObject(
            URI.create("string:///BrokenClass.java"), JavaFileObject.Kind.SOURCE
        ) {
            @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) {
                return "public class BrokenClass extends {\n}";
            }
        };
        List<JavaFileObject> javaFileObjects = new ArrayList<>();
        javaFileObjects.add(fileObject);
        ToolProvider.getSystemJavaCompiler().getTask(
            null,
            null,
            diagnostic -> System.out.println("diagnostic end pos: " + diagnostic.getEndPosition()),
            null,
            null,
            javaFileObjects
        ).call();
    }
}