java动态编译总是报空指针异常

public class Test {

                    public static void main(String[] args) throws IOException{

                                            JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
                                            int result = jc.run(null, null, null, "c:/Hi.java");
                                            System.out.println(result==0?"编译成功":"编译失败");
                    }

}
我的源文件在哪个根目录下放了都试了,总是报空指针异常,但是可以通过cmd命令成功编译得到.class文件,求解一下这到底是什么问题

编译成功了,将java/jdk/lib/tools.jar拷贝到java/jre/lib文件夹下,问题立马就解决了。但是还是不知道为什么

你配置的环境变量在java/jre/lib目录下,所以编译的时候,jvm会直接去你的环境目录下查找,
而你的java文件在c:/Hi.java目录下,他查找不到,所以报空指针

将你的环境变量 java_home 指向jdk 而不是jre