你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
Java SE 6新特性: 编译器 API(7)
 

清单 4. 编译非文本形式的源文件01 package math;
02 import javax.tools.*;
03 import java.io.FileOutputStream;
04 import java.util.Arrays;
05 public class AdvancedCompiler {
06  public static void main(String[] args) throws Exception{
07   // Steps used to compile Calculator
08   // Steps used to compile StringObject
09   // construct CalculatorTest in memory
10   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
11   StandardJavaFileManager fileManager =
      compiler.getStandardFileManager(null, null, null);
12     JavaFileObject file = constructTestor();
13     Iterable<? extends JavaFileObject> files = Arrays.asList(file);
14     JavaCompiler.CompilationTask task = compiler.getTask (
         null, fileManager, null, null, null, files);
15     Boolean result = task.call();
16     if( result == true ) {
17      System.out.println("Succeeded");
18     }
19  }
20  private static SimpleJavaFileObject constructTestor() {
21   StringBuilder contents = new StringBuilder(
      "package math;" +
      "class CalculatorTest {
" +
       " public void testMultiply() {
" +
      "  Calculator c = new Calculator();
" +
      "  System.out.println(c.multiply(2, 4));
" +
      " }
" +
      " public static void main(String[] args) {
" +
      "  CalculatorTest ct = new CalculatorTest();
" +
      "  ct.testMultiply();
" +
      " }
" +
      "}
");
22   StringObject so = null;
23   try {
24    so = new StringObject("math.CalculatorTest", contents.toString());
25   } catch(Exception exception) {
26    exception.printStackTrace();
27   }
28   return so;
29  }
30 }

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089