¿Cómo obtener el JavaFileManager correcto en un procesador de anotación Java?

He escrito un procesador de anotaciones Java extendiendojavax.annotation.processing.AbstractProcessor que se llama en el contexto de Eclipse y funciona bien, excepto que necesito más información sobre la ruta de origen y la ruta de clase para que mi procesador funcione:

@SupportedAnnotationTypes({"MyAnno"})
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class Processor extends AbstractProcessor {

    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        // this used to work in Java4 but not anymore (since Java6?):
        String sourcePath = processingEnv.getOptions().get("sourcepath");
        String classPath = processingEnv.getOptions().get("classpath");

        for (Element e : roundEnv.getElementsAnnotatedWith(MyAnno.class)) {
            myProcess(e, sourcePath, classPath); 
        }

        return true;
    }
}

La pregunta es cómo recuperar en el contexto de procesamiento de anotaciones (la implementación deprocess) un válidoJavaFileManager que me puede dar la ruta de origen y la ruta de clase del compilador que actualmente está ejecutando el procesador de anotaciones. Preferiblemente, buscaría una solución que no implique una dependencia de las interfaces específicas de Eclipse / JDT.

He intentado lo siguiente que haceno trabajo:

DiagnosticCollector<JavaFileObject> diagnostics =
                   new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(diagnostics, null, null);
fm.getLocation(StandardLocation.CLASS_PATH); // prints an empty class path

Respuestas a la pregunta(0)

Su respuesta a la pregunta