这里分别安装了jdk1.6.0_10和jre6,分别来试验
2.project右击->properties->Java Build Path->Libraries->Add Library...
这里选择的是jre6
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler为null
把jre6替换为
jdk1.6.0_10JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler为com.sun.tools.javac.api.JavacTool@1c184f4
分析:
我们安装jdk1.6的时候,会在安装包java下发现jdk1.6.0_10和jre6两个文件夹,在jdk1.6.0_10下有一个jre包,包里的内容和jre6文件夹下的内容是一样的。这是因为我们在开发程序的时候需要用到jre,所以jdk1.6.0_10下有一个jre包,但只运行java程序的时候,只会用到jre6下的命令。弄清楚这一点,问题就好说了,我们要获得编译器,可是jre6文件夹下根本没有编译器,所有我们应该使用jdk1.6.0_10文件夹下的jre.
http://blog.csdn.net/gumanren/article/details/4829718