调用编译器编译牛
如果没有编译警告和错误,这个call() 方法会编译所有的 compilationUnits 变量指定的文件,以及有依赖关系的可编译的文件. 想要知道是否所有的都成功了,去查看一下返回的 Boolean 值. 只有当所有的编译单元都执行成功了,这个 call() 方法才返回 UE . 一旦有任何错误,这个方法就会返回 LSE. 在展示运行这个例子之前,让我们添加最后一个东西,DiagnosticListener, 或者更确切的说, DiagnosticCollector.的实现类.把这个监听器当作getTask()的第三个参数传递进去,你就可以在编译之后进行一些调式信息的查询了.
for (Diagnostic diagnostic : tDiagnostics()) {
nsole().printf(
\"Code: %s%n\" +
\"Kind: %s%n\" +
\"Position: %s%n\" +
\"Start Position: %s%n\" +
\"End Position: %s%n\" +
\"Source: %s%n\" +
\"Message: %s%n\",
前期提示过由于私募债和信托的刚性兑(百科)付被打破、外汇市场的套利空间在不断压缩、房地产投资(百科)收益将逐步萎缩等因素影响 tCode(), tKind(),
tPosition(), tStartPosition(),
tEndPosition(), tSource(),
tMessage(null));
}
在最后,你应该调用管理器的close() 方法.
把所有的放在一起,就得到的了下面的程序,让我们重新编译Hello类.
import .*;
import il.*;
import ols.*;
public class BigCompile {
public static void main(String args[]) throws IOException {
JavaCompiler compiler = tSystemJavaCompiler();
DiagnosticCollector diagnostics =
new DiagnosticCollector();
StandardJavaFileManager fileManager =
tStandardFileManager(diagnostics, null, null);
Iterable? extends JavaFileObject compilationUnits =
tJavaFileObjectsFromStrings(List(\"va\"));
pilationTask task = tTask(
null, fileManager, diagnostics, null, null, compilationUnits);
Boolean success = ll();
for (Diagnostic diagnostic : tDiagnostics()) {
nsole().printf(
\"Code: %s%n\" +
\"Kind: %s%n\" +
\"Position: %s%n\" +
\"Start Position: %s%n\" +
\"End Position: %s%n\" +
\"Source: %s%n\" +
\"Message: %s%n\",
tCode(), tKind(),
tPosition(), tStartPosition(),
tEndPosition(), tSource(),
tMessage(null));
}
ose();
intln(\"Success: \" + success);
}
}
编译和运行这个程序会输出成功的信息:
javac va
java BigCompile
Success: true
然而,如果你把 println 方法改成书写错误的 pritnln 方法,当你运行时你会得到下面的信息:
java BigCompile
Code: cation
Kind: ERROR
Position: 80
Start Position: 70
End Position: 88
Source: va
Message: va:3: cannot find symbol
symbol : method pritnln(ring)
location: class intStream
Success: false
使用Compiler API,你可以实现比在这篇简要的提示介绍的更多的事情. 例如,你可以控制输入输出的目录或者在集成编译器里高亮一些编译错误. 现在,向 Java Compiler API表示感谢,你可以使用标准API了. For more information on the Java Compiler API and JSR 199, see the JSR 199 specification.
查看本文来源
儿童健脾胃的药排行榜重庆宫颈糜烂治疗多少钱
太原治疗男科哪家好
- 06月21日科幻大丹犬喜欢咬袜子的个原因位置
- 06月21日科幻外出期间柴犬总是吃草是为什么位置
- 06月21日科幻外出无烦恼防治博美犬晕车的方法位置
- 06月21日科幻给狗狗吃蛋糕要注意量位置
- 06月21日科幻多了解一些养护知识照顾好阿拉斯加幼犬位置
- 06月21日科幻夏季防止松狮犬中暑的简单方法位置
- 06月21日科幻夏季选择什么样的狗粮位置
- 06月20日科幻猫咪随意大小便了解原因改善位置
- 06月20日科幻猫属于什么动物猫咪属于肉食动物位置
- 06月20日科幻猫咪饲料如何配制猫咪饲料配制方法位置
- 06月20日科幻猫扑人怎么办位置
- 06月20日科幻猫咪训练的四大注意事项你了解吗位置