以下是用eclipse编写的Java代码..。
package compile;
import java.io.IOException;
import java.util.Arrays;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class Execute {
public static void main(String args[]) throws IOException, ClassNotFoundException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
diagnostics, null, null);
Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(Arrays
.asList("F:\\practice java\\project\\KeepingMoreKidsQuiet.java"));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
diagnostics, null, null, compilationUnits);
boolean success = task.call();
System.out.println(success);
if(!success)
System.out.println(diagnostics.getDiagnostics());
fileManager.close();
}
}当我运行我的Java程序时,它在这一行上给出了一个错误
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);我所犯的错误是:
线程"main“java.lang.NullPointerException at compile.Execute.main(Execute.java:17)中的异常
你能告诉我如何解决这个错误吗?
发布于 2013-08-08 13:53:23
来自ToolProvider.getSystemJavaCompiler()
返回: 如果没有提供编译器,则此平台
null或提供的编译器。
发布于 2014-12-26 14:16:23
这通常是在使用JRE而不是JDK运行程序时出现的。
IDE类似Eclipse,检测JRE路径并将其设置为Java程序的运行路径。如果您正在使用Eclipse,那么在构建路径内使用JDK路径设置新VM (默认情况下使用JRE路径)
如果直接从命令提示符运行,那么检查类路径。
发布于 2013-08-08 13:51:32
在这一行中,编译器引用可能为空,JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();。
尝试在路径的开头设置%JAVA_HOME%\bin
https://stackoverflow.com/questions/18127806
复制相似问题