码迷,mamicode.com
首页 > 编程语言 > 详细

使用JavaCompiler编译java源文件

时间:2015-05-20 22:13:33      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

从1.6版本的JDK开始,JDK提供了标准的包可以方便的调用JVM的编译器,可以方便的使用JVM的编译器来编译java源文件。JDK提供的调用接口是JavaCompiler类,该类在JDK的tools.jar包中。

1、使用JavaCompiler接口实现java文件编译

String sOutputPath = "D:\\classes";
List<String> paths = new ArrayList<String>();
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<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
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提供的包,而当在IDE中运行实例时,由于IDE一般配置的JRE是独立的JRE,因此在获取JavaCompiler时将获取不到JVM提供的编译器(获取方法:JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();),所以会报出NullPointerException。解决方法是修改IDE的JRE路径,修改成JDK中的JRE路径,Windows->Preferences->Java->Installed JREs选择右侧表格中的JRE,然后进行编辑,将JRE的路径修改成%JAVA_HOME%/jre路径,这样再运行就不会再报出空指针异常了。

使用JavaCompiler编译java源文件

标签:

原文地址:http://www.cnblogs.com/demo111/p/4518137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!