<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FCompiler_Diagnostic</id>
		<title>Java Tutorial/Development/Compiler Diagnostic - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FCompiler_Diagnostic"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Compiler_Diagnostic&amp;action=history"/>
		<updated>2026-04-10T19:25:28Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Development/Compiler_Diagnostic&amp;diff=3729&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Compiler_Diagnostic&amp;diff=3729&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Development/Compiler_Diagnostic&amp;diff=3730&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Compiler_Diagnostic&amp;diff=3730&amp;oldid=prev"/>
				<updated>2010-05-31T15:30:35Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Compile a Java code ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class FirstCompile {&lt;br /&gt;
  public static void main(String args[]) throws IOException {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    int results = compiler.run(null, null, null, &amp;quot;Foo.java&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;Success: &amp;quot; + (results == 0));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// File: MyClass.java&lt;br /&gt;
class MyClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(&amp;quot;Hello, World&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Compile a Java file with JavaCompiler ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import javax.tools.DiagnosticCollector;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.JavaFileObject;&lt;br /&gt;
import javax.tools.StandardJavaFileManager;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class DiagnosticCollectorCompile {&lt;br /&gt;
  public static void main(String args[]) throws IOException {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    DiagnosticCollector&amp;lt;JavaFileObject&amp;gt; diagnostics = new DiagnosticCollector&amp;lt;JavaFileObject&amp;gt;();&lt;br /&gt;
    StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; compilationUnits = fileManager&lt;br /&gt;
        .getJavaFileObjectsFromStrings(Arrays.asList(&amp;quot;Foo.java&amp;quot;));&lt;br /&gt;
    JavaCompiler.rupilationTask task = compiler.getTask(null, fileManager, diagnostics, null,&lt;br /&gt;
        null, compilationUnits);&lt;br /&gt;
    boolean success = task.call();&lt;br /&gt;
    fileManager.close();&lt;br /&gt;
    System.out.println(&amp;quot;Success: &amp;quot; + success);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
// File: MyClass.java&lt;br /&gt;
class MyClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(&amp;quot;Hello, World&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Compiling from Memory ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import java.io.StringWriter;&lt;br /&gt;
import java.lang.reflect.InvocationTargetException;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import javax.tools.Diagnostic;&lt;br /&gt;
import javax.tools.DiagnosticCollector;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.JavaFileObject;&lt;br /&gt;
import javax.tools.SimpleJavaFileObject;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
import javax.tools.JavaCompiler.rupilationTask;&lt;br /&gt;
import javax.tools.JavaFileObject.Kind;&lt;br /&gt;
public class CompileSourceInMemory {&lt;br /&gt;
  public static void main(String args[]) throws IOException {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    DiagnosticCollector&amp;lt;JavaFileObject&amp;gt; diagnostics = new DiagnosticCollector&amp;lt;JavaFileObject&amp;gt;();&lt;br /&gt;
    StringWriter writer = new StringWriter();&lt;br /&gt;
    PrintWriter out = new PrintWriter(writer);&lt;br /&gt;
    out.println(&amp;quot;public class HelloWorld {&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;  public static void main(String args[]) {&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;    System.out.println(\&amp;quot;This is in another java file\&amp;quot;);&amp;quot;);    &lt;br /&gt;
    out.println(&amp;quot;  }&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;}&amp;quot;);&lt;br /&gt;
    out.close();&lt;br /&gt;
    JavaFileObject file = new JavaSourceFromString(&amp;quot;HelloWorld&amp;quot;, writer.toString());&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; compilationUnits = Arrays.asList(file);&lt;br /&gt;
    CompilationTask task = compiler.getTask(null, null, diagnostics, null, null, compilationUnits);&lt;br /&gt;
    &lt;br /&gt;
    boolean success = task.call();&lt;br /&gt;
    for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {&lt;br /&gt;
      System.out.println(diagnostic.getCode());&lt;br /&gt;
      System.out.println(diagnostic.getKind());&lt;br /&gt;
      System.out.println(diagnostic.getPosition());&lt;br /&gt;
      System.out.println(diagnostic.getStartPosition());&lt;br /&gt;
      System.out.println(diagnostic.getEndPosition());&lt;br /&gt;
      System.out.println(diagnostic.getSource());&lt;br /&gt;
      System.out.println(diagnostic.getMessage(null));&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;Success: &amp;quot; + success);&lt;br /&gt;
    if (success) {&lt;br /&gt;
      try {&lt;br /&gt;
        Class.forName(&amp;quot;HelloWorld&amp;quot;).getDeclaredMethod(&amp;quot;main&amp;quot;, new Class[] { String[].class })&lt;br /&gt;
            .invoke(null, new Object[] { null });&lt;br /&gt;
      } catch (ClassNotFoundException e) {&lt;br /&gt;
        System.err.println(&amp;quot;Class not found: &amp;quot; + e);&lt;br /&gt;
      } catch (NoSuchMethodException e) {&lt;br /&gt;
        System.err.println(&amp;quot;No such method: &amp;quot; + e);&lt;br /&gt;
      } catch (IllegalAccessException e) {&lt;br /&gt;
        System.err.println(&amp;quot;Illegal access: &amp;quot; + e);&lt;br /&gt;
      } catch (InvocationTargetException e) {&lt;br /&gt;
        System.err.println(&amp;quot;Invocation target: &amp;quot; + e);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class JavaSourceFromString extends SimpleJavaFileObject {&lt;br /&gt;
  final String code;&lt;br /&gt;
  JavaSourceFromString(String name, String code) {&lt;br /&gt;
    super(URI.create(&amp;quot;string:///&amp;quot; + name.replace(&amp;quot;.&amp;quot;,&amp;quot;/&amp;quot;) + Kind.SOURCE.extension),Kind.SOURCE);&lt;br /&gt;
    this.code = code;&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public CharSequence getCharContent(boolean ignoreEncodingErrors) {&lt;br /&gt;
    return code;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Compiling with a DiagnosticListener ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import javax.tools.Diagnostic;&lt;br /&gt;
import javax.tools.DiagnosticCollector;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.JavaFileObject;&lt;br /&gt;
import javax.tools.StandardJavaFileManager;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class SecondCompile {&lt;br /&gt;
  public static void main(String args[]) throws IOException {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    DiagnosticCollector&amp;lt;JavaFileObject&amp;gt; diagnostics = new DiagnosticCollector&amp;lt;JavaFileObject&amp;gt;();&lt;br /&gt;
    StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; compilationUnits = fileManager&lt;br /&gt;
        .getJavaFileObjectsFromStrings(Arrays.asList(&amp;quot;YourFile.java&amp;quot;));&lt;br /&gt;
    Iterable&amp;lt;String&amp;gt; options = Arrays.asList(&amp;quot;-d&amp;quot;, &amp;quot;classes&amp;quot;, &amp;quot;-sourcepath&amp;quot;, &amp;quot;src&amp;quot;);&lt;br /&gt;
    JavaCompiler.rupilationTask task = compiler.getTask(null, fileManager, diagnostics, options,&lt;br /&gt;
        null, compilationUnits);&lt;br /&gt;
    boolean success = task.call();&lt;br /&gt;
    for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {&lt;br /&gt;
      System.out.println(diagnostic.getCode());&lt;br /&gt;
      System.out.println(diagnostic.getKind());&lt;br /&gt;
      System.out.println(diagnostic.getPosition());&lt;br /&gt;
      System.out.println(diagnostic.getStartPosition());&lt;br /&gt;
      System.out.println(diagnostic.getEndPosition());&lt;br /&gt;
      System.out.println(diagnostic.getSource());&lt;br /&gt;
      System.out.println(diagnostic.getMessage(null));&lt;br /&gt;
    }&lt;br /&gt;
    fileManager.close();&lt;br /&gt;
    System.out.println(&amp;quot;Success: &amp;quot; + success);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Diagnostic Demo ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.tools.Diagnostic;&lt;br /&gt;
import javax.tools.DiagnosticCollector;&lt;br /&gt;
import javax.tools.JavaCompilerTool;&lt;br /&gt;
import javax.tools.JavaFileObject;&lt;br /&gt;
import javax.tools.StandardJavaFileManager;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
import javax.tools.JavaCompilerTool.rupilationTask;&lt;br /&gt;
public class DiagnosticDemo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    String sourceFile = &amp;quot;c:/HelloWorld.Java&amp;quot;;&lt;br /&gt;
    JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool();&lt;br /&gt;
    DiagnosticCollector&amp;lt;JavaFileObject&amp;gt; diagnostics = new DiagnosticCollector&amp;lt;JavaFileObject&amp;gt;();&lt;br /&gt;
    StandardJavaFileManager fileManager =&lt;br /&gt;
    compiler.getStandardFileManager(diagnostics);&lt;br /&gt;
    List&amp;lt;File&amp;gt; sourceFileList = new ArrayList&amp;lt;File&amp;gt;();&lt;br /&gt;
    sourceFileList.add(new File(sourceFile));&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; compilationUnits = fileManager&lt;br /&gt;
        .getJavaFileObjectsFromFiles(sourceFileList);&lt;br /&gt;
    CompilationTask task = compiler.getTask(null, fileManager, null, null, null, compilationUnits);&lt;br /&gt;
    task.run();&lt;br /&gt;
    try {&lt;br /&gt;
      fileManager.close();&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
    }&lt;br /&gt;
    List&amp;lt;Diagnostic&amp;lt;? extends JavaFileObject&amp;gt;&amp;gt; diagnosticList = diagnostics.getDiagnostics();&lt;br /&gt;
    for (Diagnostic&amp;lt;? extends JavaFileObject&amp;gt; diagnostic : diagnosticList) {&lt;br /&gt;
      System.out.println(&amp;quot;Position:&amp;quot; + diagnostic.getStartPosition());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Java Compiler tools: how you can compile a Java source from inside a Java program ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import javax.tools.JavaCompilerTool;&lt;br /&gt;
import javax.tools.JavaFileObject;&lt;br /&gt;
import javax.tools.StandardJavaFileManager;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
import javax.tools.JavaCompilerTool.rupilationTask;&lt;br /&gt;
public class JavaCompilerDemo {&lt;br /&gt;
    public static void main (String[] args) {&lt;br /&gt;
        String sourceFile = &amp;quot;c:/HelloWorld.Java&amp;quot;;&lt;br /&gt;
        JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool ();&lt;br /&gt;
        StandardJavaFileManager fileManager =&lt;br /&gt;
                compiler.getStandardFileManager (null);&lt;br /&gt;
        // prepare the source file(s) to compile&lt;br /&gt;
        List&amp;lt;File&amp;gt; sourceFileList = new ArrayList &amp;lt;File&amp;gt; ();&lt;br /&gt;
        sourceFileList.add (new File (sourceFile));&lt;br /&gt;
        Iterable&amp;lt;? extends JavaFileObject&amp;gt; compilationUnits =fileManager.getJavaFileObjectsFromFiles (sourceFileList);&lt;br /&gt;
        CompilationTask task = compiler.getTask (null,fileManager, null, null, null, compilationUnits);&lt;br /&gt;
        task.run ();&lt;br /&gt;
        boolean result = task.getResult ();&lt;br /&gt;
        if (result) {&lt;br /&gt;
            System.out.println (&amp;quot;Compilation was successful&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
            System.out.println (&amp;quot;Compilation failed&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        try {&lt;br /&gt;
            fileManager.close ();&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
 * import Java.util.Date;&lt;br /&gt;
public class HelloWorld {&lt;br /&gt;
    public static void main (String[] args) {&lt;br /&gt;
        Date date = new Date (1234, 11, 12);&lt;br /&gt;
        System.out.println (&amp;quot;[&amp;quot; + date + &amp;quot;] Hello World !&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>