做java动态编译练习时,使用JavaCompiler的run方法报错。报错信息如下:
Exception in thread "main" java.lang.NullPointerException
at com.sxt.Dynamic.Demo01.main(Demo01.java:14)
代码是这样的:
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
public class Demo01 {
public static void main(String[] args) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null,"f:/mycode/Welcome.java");
System.out.println(result==0?"编译成功":"编译失败");
}
}
在多个网站上搜索,stackoverflow上给出的办法是修改javahome路径,试了几次仍报错,后面发现还是要将javahome改为如:C:\\Program Files\\Java\\jdk1.8.0_131\\jre 才能解决,只在系统变量里没用,eclipse似乎不知道。只有在代码中显式设置后,OK。
如下图示: