<?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%2FJava_Compiler</id>
		<title>Java Tutorial/Development/Java Compiler - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDevelopment%2FJava_Compiler"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Java_Compiler&amp;action=history"/>
		<updated>2026-04-20T04:33:55Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Development/Java_Compiler&amp;diff=3646&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/Java_Compiler&amp;diff=3646&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/Java_Compiler&amp;diff=3647&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Development/Java_Compiler&amp;diff=3647&amp;oldid=prev"/>
				<updated>2010-05-31T15:28:21Z</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 Java file ==&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 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 CompileFiles2 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    DiagnosticCollector&amp;lt;JavaFileObject&amp;gt; dc;&lt;br /&gt;
    dc = new DiagnosticCollector&amp;lt;JavaFileObject&amp;gt;();&lt;br /&gt;
    StandardJavaFileManager sjfm;&lt;br /&gt;
    sjfm = compiler.getStandardFileManager(dc, null, null);&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; fileObjects;&lt;br /&gt;
    fileObjects = sjfm.getJavaFileObjects(args);&lt;br /&gt;
    compiler.getTask(null, sjfm, dc, null, null, fileObjects).call();&lt;br /&gt;
    for (Diagnostic d : dc.getDiagnostics()) {&lt;br /&gt;
      System.out.println(d.getMessage(null));&lt;br /&gt;
      System.out.printf(&amp;quot;Line number = %d\n&amp;quot;, d.getLineNumber());&lt;br /&gt;
      System.out.printf(&amp;quot;File = %s\n&amp;quot;, d.getSource());&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;
==  Compiler Info ==&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.util.Set;&lt;br /&gt;
import javax.lang.model.SourceVersion;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class CompilerInfo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    System.out.println(&amp;quot;Supported source versions:&amp;quot;);&lt;br /&gt;
    Set&amp;lt;SourceVersion&amp;gt; srcVer = compiler.getSourceVersions();&lt;br /&gt;
    for (SourceVersion sv : srcVer)&lt;br /&gt;
      System.out.println(&amp;quot;  &amp;quot; + sv.name());&lt;br /&gt;
    int nargs = compiler.isSupportedOption(args[0]);&lt;br /&gt;
    if (nargs == -1)&lt;br /&gt;
      System.out.println(&amp;quot;Option &amp;quot; + args[0] + &amp;quot; is not supported&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Option &amp;quot; + args[0] + &amp;quot; takes &amp;quot; + nargs + &amp;quot; arguments&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 String ==&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.lang.reflect.Method;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.NoSuchElementException;&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;
public class CompileString {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    String program = &amp;quot;class Test{&amp;quot; + &amp;quot;   public static void main (String [] args){&amp;quot;&lt;br /&gt;
        + &amp;quot;      System.out.println (\&amp;quot;Hello, World\&amp;quot;);&amp;quot;&lt;br /&gt;
        + &amp;quot;      System.out.println (args.length);&amp;quot; + &amp;quot;   }&amp;quot; + &amp;quot;}&amp;quot;;&lt;br /&gt;
    Iterable&amp;lt;? extends JavaFileObject&amp;gt; fileObjects;&lt;br /&gt;
    fileObjects = getJavaSourceFromString(program);&lt;br /&gt;
    compiler.getTask(null, null, null, null, null, fileObjects).call();&lt;br /&gt;
    Class&amp;lt;?&amp;gt; clazz = Class.forName(&amp;quot;Test&amp;quot;);&lt;br /&gt;
    Method m = clazz.getMethod(&amp;quot;main&amp;quot;, new Class[] { String[].class });&lt;br /&gt;
    Object[] _args = new Object[] { new String[0] };&lt;br /&gt;
    m.invoke(null, _args);&lt;br /&gt;
  }&lt;br /&gt;
  static Iterable&amp;lt;JavaSourceFromString&amp;gt; getJavaSourceFromString(String code) {&lt;br /&gt;
    final JavaSourceFromString jsfs;&lt;br /&gt;
    jsfs = new JavaSourceFromString(&amp;quot;code&amp;quot;, code);&lt;br /&gt;
    return new Iterable&amp;lt;JavaSourceFromString&amp;gt;() {&lt;br /&gt;
      public Iterator&amp;lt;JavaSourceFromString&amp;gt; iterator() {&lt;br /&gt;
        return new Iterator&amp;lt;JavaSourceFromString&amp;gt;() {&lt;br /&gt;
          boolean isNext = true;&lt;br /&gt;
          public boolean hasNext() {&lt;br /&gt;
            return isNext;&lt;br /&gt;
          }&lt;br /&gt;
          public JavaSourceFromString next() {&lt;br /&gt;
            if (!isNext)&lt;br /&gt;
              throw new NoSuchElementException();&lt;br /&gt;
            isNext = false;&lt;br /&gt;
            return jsfs;&lt;br /&gt;
          }&lt;br /&gt;
          public void remove() {&lt;br /&gt;
            throw new UnsupportedOperationException();&lt;br /&gt;
          }&lt;br /&gt;
        };&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;
  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;
==  Enum Alternate Java Compilers ==&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.util.ServiceLoader;&lt;br /&gt;
import javax.tools.JavaCompiler;&lt;br /&gt;
public class EnumAlternateJavaCompilers {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    ServiceLoader&amp;lt;JavaCompiler&amp;gt; compilers;&lt;br /&gt;
    compilers = ServiceLoader.load(JavaCompiler.class);&lt;br /&gt;
    System.out.println(compilers.toString());&lt;br /&gt;
    for (JavaCompiler compiler : compilers)&lt;br /&gt;
      System.out.println(compiler);&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;
==  Get classpath using System class ==&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;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    System.out.println(System.getProperty(&amp;quot;java.class.path&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;
==  JavaCompiler.run to compile ==&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 javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class CompileFiles1 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    compiler.run(null, null, null, args);&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;
==  Programmatically compile Java class ==&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 javax.tools.JavaCompiler;&lt;br /&gt;
import javax.tools.ToolProvider;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();&lt;br /&gt;
    int result = compiler.run(null, null, null, &amp;quot;Hello.java&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;Compile result code = &amp;quot; + result);&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>