<?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%2FJDK_6%2FJava_Compiler_tools</id>
		<title>Java/JDK 6/Java Compiler tools - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJDK_6%2FJava_Compiler_tools"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JDK_6/Java_Compiler_tools&amp;action=history"/>
		<updated>2026-04-04T03:30:36Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/JDK_6/Java_Compiler_tools&amp;diff=6355&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JDK_6/Java_Compiler_tools&amp;diff=6355&amp;oldid=prev"/>
				<updated>2010-06-01T06:12:06Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&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;Версия 06:12, 1 июня 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>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/JDK_6/Java_Compiler_tools&amp;diff=6354&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JDK_6/Java_Compiler_tools&amp;diff=6354&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&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;
 &lt;br /&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 JDK6FirstCompile {&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;
}&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;
 &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;
}&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;
 &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;
}&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;
 &lt;br /&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 JDK6JavaCompilerDemo {&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;
 */&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>
			</entry>

	</feed>