Java/JDK 6/Diagnostic

Материал из Java эксперт
Перейти к: навигация, поиск

Compiling with a DiagnosticListener

   <source lang="java">

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);
 }

}

       </source>
   
  
 
  



Diagnostic Demo

   <source lang="java">

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());
   }
 }

}

       </source>