in compilers/jsr199/src/main/java/org/apache/commons/jci2/compiler/jsr199/Jsr199JavaCompiler.java [216:252]
public CompilationResult compile( final String[] pResourcePaths, final ResourceReader pReader, final ResourceStore pStore, final ClassLoader classLoader, final JavaCompilerSettings settings) {
final Collection<JavaFileObject> units = new ArrayList<>();
for (final String sourcePath : pResourcePaths) {
log.debug("compiling " + sourcePath);
units.add(new CompilationUnit(sourcePath, pReader));
}
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
if (compiler == null) {
final ServiceLoader<javax.tools.JavaCompiler> loader = ServiceLoader.load(javax.tools.JavaCompiler.class);
compiler = loader.iterator().next();
}
if (compiler == null) {
throw new IllegalStateException("No java compiler in class path");
}
final JavaFileManager fileManager = new JciJavaFileManager(units, pStore);
final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
final CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, null, units);
if (task.call().booleanValue()) {
log.debug("compiled");
}
final List<Diagnostic<? extends JavaFileObject>> jsrProblems = diagnostics.getDiagnostics();
final CompilationProblem[] problems = new CompilationProblem[jsrProblems.size()];
int i = 0;
for (final Diagnostic<? extends JavaFileObject> jsrProblem : jsrProblems) {
problems[i++] = new Jsr199CompilationProblem(jsrProblem);
}
return new CompilationResult(problems);
}