在很多Java应用中需要在程序中调用Java编译器来编译和运行。但在早期的版本中(Java SE5及以前版本)中只能通过tools.jar中的com.sun.tools.javac包来调用Java编译器,但由于tools.jar不是标准的Java库,在使用时必须要设置这个jar的路径。而在Java SE6中为我们提供了标准的包来操作Java编译器,这就是javax.tools包。使用这个包,我们可以不用将jar文件路径添加到classpath中了。
一、使用JavaCompiler接口来编译Java源程序
使用Java API来编译Java源程序有很多方法,现在让我们来看一种最简单的方法,通过JavaCompiler进行编译。
我们可以通过ToolProvider类的静态方法getSystemJavaCompiler来得到一个JavaCompiler接口的实例。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
JavaCompiler中最核心的方法是run。通过这个方法可以编译Java源程序。这个方法有3个固定参数和1个可变参数(可变参数是从Jave SE5开始提供的一个新的参数类型,用type… argu表示)。前3个参数分别用来为Java编译器提供参数、得到Java编译器的输出信息以及接收编译器的错误信息,后面的可变参数可以传入一个或多个Java源程序文件。如果run编译成功,返回0。
int run(InputStream in, OutputStream out, OutputStream err, String... arguments)
如果前3个参数传入的是null,那么run方法将以标准的输入、输出代替,即System.in、System.out和System.err。如果我们要编译一个test.java文件,并将使用标准输入输出,run的使用方法如下:
|
编译成功的输出结果:
编译成功
JavaCompiler测试成功
编译失败的输出结果:
test.java:9: 找不到符号
符号:方法 printlnln(java.lang.String)
位置:类 java.io.PrintStream
System.out.printlnln("JavaCompiler测试成功!");
^1 错误
编译失败
| 共4页: 1 [2] [3] [4] 下一页 | ||
|
|
||||
| · 二手仿冒设备与思科再.. · 汶川大地震 IT技术人为.. · 网络故障排除宝典 · 访问控制列表(ACL)介绍 · 视频访谈:网管员如何踏.. · 首届中国IT工程师生态.. · 华为路由器配置 · 企业数据恢复指南 |
· 龙芯要做中国的“奔腾” · 2008年上半年全国软考.. · 交换机故障解决指南 · Vista SP1对决XP SP3 · LAMP技术精解 · 微软出价446亿美元收购.. · AIX操作系统管理应用(.. · 华为员工自杀频频拷问.. |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 |
· Apache技术专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · ADSL应用面面俱到 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 · Apache技术专题 |
· 企业数据恢复指南 · RAID——磁盘阵列基础 · 路由器设置与口令恢复 · SOA 面向服务架构 · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 |
|||