【发布时间】:2017-06-09 01:44:48
【问题描述】:
这是我的代码,我在JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); 行得到空指针异常,根据stackoverflow 上的给定示例,有人说要明确设置“java.home”,但是我遇到了同样的问题。
File dir = new File("d://Hello.java");
File[] javaFiles = dir.new FilenameFilter() {
public boolean accept(File file, String name) {
return name.endsWith(".java");
}
});
String home= System.getProperty("java.home");
System.out.println(""+home.replace("\\jre",""));
System.setProperty("java.home", home);
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(diagnostics, Locale.US,Charset.forName("UTF-8"));
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(javaFiles));
javaCompiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
System.out.format("Error on line %d in %d%n", diagnostic.getLineNumber(), diagnostic.getSource().toString());
}
fileManager.close();
【问题讨论】:
标签: java