Compiler construction JavaCompiler在“ToolProvider.getSystemJavaCompiler()”上提供NullPointerException。我很确定我已经安装了JDK,对吗?

Compiler construction JavaCompiler在“ToolProvider.getSystemJavaCompiler()”上提供NullPointerException。我很确定我已经安装了JDK,对吗?,compiler-construction,nullpointerexception,java,Compiler Construction,Nullpointerexception,Java,有关守则的条文如下: String fileToCompile = "C:/Users/Jeff/Documents/Test/Compiler 6/examplejavafile.java";//Absolute path JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); FileOutputStream errorStream = new FileOutputStream("Errors.txt"); int comp

有关守则的条文如下:

String fileToCompile = "C:/Users/Jeff/Documents/Test/Compiler 6/examplejavafile.java";//Absolute path
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
FileOutputStream errorStream = new FileOutputStream("Errors.txt");
int compilationResult = compiler.run(null, null, errorStream, "-verbose", fileToCompile);
if(compilationResult == 0){
    System.out.println("Compilation is successful");
}else{
    System.out.println("Compilation Failed");
}
当我运行这段代码时,它为我提供了NPE:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

现在我被告知这是环境中的一个错误,但我已经安装了JDK,并且我的CLASSPATH变量设置为C:\Program Files\Java\jdk1.7.0\u 04\bin。我可能是个傻瓜,不知道如何通过JDK而不是JRE运行程序,但不管怎样,我需要帮助。另外,我正在使用Eclipse,如果它有任何不同的话。

您需要导入ToolProvider,因为它没有定义,除非您没有包含该信息

import javax.tools.ToolProvider;

在运行菜单下查找项目的运行配置。在JRE下,is应指定项目执行环境使用的是“JavaSE-1.6”jsk1.6.20_32或类似版本。

ToolProvider.getSystemJavaCompiler不可用

类路径中是否缺少tools.jar

将类路径设置为tools.jar文件,该文件可以在jdk\jre目录中找到


System.setPropertyjava.home,C:\\ProgramFiles\\Java\\jdk1.7.0\u 02

是的,我已经进口了所有必要的工具。这是运行时的控制台错误。嗯,我似乎不明白为什么那行会抛出一个NPE,甚至是它前面的那行。我刚刚运行了代码,它似乎在Ubuntu上运行良好。对不起,请考虑另一个。换句话说,如果您在Windows上,那么检查JAVA_HOME是否指向JDK而不是运行时环境。该行如何给出NPE?堆栈跟踪看起来像什么?这是有道理的,但我在那里看到的唯一选项是jre7,这让我相信我安装JDK是错误的;我需要对eclipse做些什么来更新我的安装吗?