Null Pointer Exception while using Java Compiler API
Solution 1:
I got the same error. Maybe I am too late to answer this question, but I share my own experiences, it might help someone else facing the same issue in the future. I was playing around with the source code at Compile Java Files At Runtime.
I was getting java.lang.NullPointerException
as it is mentioned. I printed out the Java home directory with System.out.println(System.getProperty("java.home"));
, and noticed my Eclipse was pointing to "C:\Program Files\Java\jre7
" even after I changed my preferences to use JDK1.7 instead of JRE1.7.
I found a workaround by forcing the usage of JDK1.7 by setting system property like this:
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_02");
Then I compiled my program and did not get any NullPointerException
.
Solution 2:
I suspect you're running into this problem - running the code with a JRE instead of a JDK.
When you run SimpleCompileTest
, try explicitly specifying the version of java.exe you're using as the one in your JDK directory.
Solution 3:
Probably you have a JRE instead of JDK installed. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477844
Solution 4:
I was having the same problem
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
was returning null. Even after using
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.8.0_31");
was returning null.
However the issue was simple as this code is in the Tools.jar
found in Java\jdk1.8.0_31\lib
if you are using JDK. what i did was to go to project-->properties-->Java Build Path-->order and export-->
and moved tool.jar
to the top of other JRE and projects.
This helped me get rid of null hope this help you as well.Happy compiling...:-)