调用编译器编译计划
从第一天开始,标准Java平台就缺少能够被调用,去产生Java字节码的编译器接口. 使用Sun实现的平台,一个用户可以通过非标准的 vac 包中的Main class 去编译你的代码 (你可以在lib子目录下的 r 文件里找到它). 然而这个包并没有提供一个标准的公开的编程接口. 使用其它实现的用户必然不能访问这个类. 使用Java SE 6和在JSR-199中定义的它的新的Java编译器接口,你可以从你自己的应用程序里访问javac编译工具了. 有两种方式使用这种工具. 一种是简单的,一种是稍微复杂点但拥有更多选项的. 你首先将会用较简单的一种去编译 \"Hello, World\"程序,就是下面的这个:
public class Hello {
public static void main(String args[]) {
intln(\"Hello, World\");
}
她们首先是冲着价格去的 }
要想从Java程序里调用Java编译器,你需要访问JavaCompiler 接口. 除此外,通过访问这个接口,你可以设置源代码的路径,classpath,和目标目录. 通过指定可编译的文件为 JavaFileObjectinstance ,你可以将它们全部编译. 然而,你并不需要对 JavaFileObject 了解多少.
可以使用 ToolProvider 类去请求 theJavaCompiler 接口的缺省实现. 这个 ToolProvider 类提供了一个 getSystemJavaCompiler() 方法, 它返回一个 JavaCompiler 接口的实例.
JavaCompiler compiler = tSystemJavaCompiler();
使用 JavaCompiler 运行编译最简单的方法是调用在这个接口工具里定义的 run() 方法,它的实现是:
int run(InputStream in,
OutputStream out,
OutputStream err,
String... arguments)
分别为前三个缺省参数 , t, and r 传入 null 值. 参数集 String 对象表示着传入编译器的文件的名称.
这样,你应该像下面这样去编译前面显示的 Hello 源程序:
int results = n(null, null, null, \"va\");
假设没有编译错误,这样会在目标目录里产生一个 ass文件. 如果这里有错误, run() 方法会把它输出到标准错误输出流里,也就是 run() 方法的的第三个参数. 当错误发生时这个方法返回一个非0的结果.
你可以使用下面的代码去编译 va 源文件:
import .*;
import ols.*;
public class CompileIt {
public static void main(String args[]) throws IOException {
JavaCompiler compiler =
tSystemJavaCompiler();
int results = n(
null, null, null, \"va\");
intln(\"Result code: \" + results);
}
}
一旦你编译了 CompileIt 一次 ,你就可以多次运行它,当你修改了 va源程序时或者要重新编译它,你不需要重新编译 CompileIt . 如果没有错误,运行 CompileIt 会产生下面的输出:
java CompileIt
Result code: 0
运行 CompileIt 同样也会在相同的目录下产生一个 ass 文件:
ls
ass
va
ass
va
查看本文来源
杭州看白癜风的医院四川哪里专业治肝病
昆明哪家医院治疗男科好
- 06月21日体育大丹犬咳嗽感冒了治疗方法位置
- 06月21日体育外出期间松狮犬不上厕所应如何训练位置
- 06月21日体育外出旅游时如何安排好雪纳瑞犬位置
- 06月21日体育给狗狗吃草莓都有哪些危害位置
- 06月21日体育多久给猫咪洗一次澡才合适呢位置
- 06月21日体育夏季防暑小观点怎样降低萨摩耶对温度的敏感位置
- 06月21日体育夏季边境牧羊犬饲养问题位置
- 06月20日体育猫得先天性心脏病怎么办做健康猫咪位置
- 06月20日体育猫尾巴的作用是什么位置
- 06月20日体育猫咪饲养需要准备什么位置
- 06月20日体育猫怕冷吗位置
- 06月20日体育猫咪训练有方法要耐心少处罚位置