compiler java_使用JavaCompiler编译java源文件
從1.6版本的JDK開始,JDK提供了標(biāo)準(zhǔn)的包可以方便的調(diào)用JVM的編譯器,可以方便的使用JVM的編譯器來編譯java源文件。JDK提供的調(diào)用接口是JavaCompiler類,該類在JDK的tools.jar包中。
1、使用JavaCompiler接口實現(xiàn)java文件編譯
String sOutputPath = "D:\\classes";
List paths = new ArrayList();
paths.add("D:\\java\\Test1.java");
paths.add("D:\\java\\Test2.java");
paths.add("D:\\java\\Test3.java");
paths.add("D:\\java\\Test4.java");
paths.add("D:\\java\\Test5.java");
paths.add("D:\\java\\Test6.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector diagnostics = new DiagnosticCollector();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
diagnostics, null, null);
Location oLocation = StandardLocation.CLASS_OUTPUT;
fileManager.setLocation(oLocation,
Arrays.asList(new File[] { new File(sOutputPath) }));
Iterable extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(paths);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
diagnostics, null, null, compilationUnits);
boolean result = task.call();
fileManager.close();
2、前面提到tools.jar是JDK提供的包,而當(dāng)在IDE中運(yùn)行實例時,由于IDE一般配置的JRE是獨立的JRE,因此在獲取JavaCompiler時將獲取不到JVM提供的編譯器(獲取方法:JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();),所以會報出NullPointerException。解決方法是修改IDE的JRE路徑,修改成JDK中的JRE路徑,Windows->Preferences->Java->Installed JREs選擇右側(cè)表格中的JRE,然后進(jìn)行編輯,將JRE的路徑修改成%JAVA_HOME%/jre路徑,這樣再運(yùn)行就不會再報出空指針異常了。
總結(jié)
以上是生活随笔為你收集整理的compiler java_使用JavaCompiler编译java源文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA中ICAP原语的使用——Mult
- 下一篇: 电子时钟设计