Java/JDK 6/Diagnostic
Compiling with a DiagnosticListener
import java.io.IOException;
import java.util.Arrays;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class SecondCompile {
public static void main(String args[]) throws IOException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(Arrays.asList("YourFile.java"));
Iterable<String> options = Arrays.asList("-d", "classes", "-sourcepath", "src");
JavaCompiler.rupilationTask task = compiler.getTask(null, fileManager, diagnostics, options,
null, compilationUnits);
boolean success = task.call();
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
System.out.println(diagnostic.getCode());
System.out.println(diagnostic.getKind());
System.out.println(diagnostic.getPosition());
System.out.println(diagnostic.getStartPosition());
System.out.println(diagnostic.getEndPosition());
System.out.println(diagnostic.getSource());
System.out.println(diagnostic.getMessage(null));
}
fileManager.close();
System.out.println("Success: " + success);
}
}
Diagnostic Demo
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompilerTool;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import javax.tools.JavaCompilerTool.rupilationTask;
public class DiagnosticDemo {
public static void main(String[] args) {
String sourceFile = "c:/HelloWorld.Java";
JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager =
compiler.getStandardFileManager(diagnostics);
List<File> sourceFileList = new ArrayList<File>();
sourceFileList.add(new File(sourceFile));
Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromFiles(sourceFileList);
CompilationTask task = compiler.getTask(null, fileManager, null, null, null, compilationUnits);
task.run();
try {
fileManager.close();
} catch (IOException e) {
}
List<Diagnostic<? extends JavaFileObject>> diagnosticList = diagnostics.getDiagnostics();
for (Diagnostic<? extends JavaFileObject> diagnostic : diagnosticList) {
System.out.println("Position:" + diagnostic.getStartPosition());
}
}
}