Null Pointer Exception while using Java Compiler API

前端 未结 6 2308
北荒
北荒 2020-11-27 07:03

MyClass.java:

package test;
public class MyClass {
    public void myMethod(){
        System.out.println(\"My Method Called\");
    }
}

Li

相关标签:
6条回答
  • 2020-11-27 07:43

    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.

    0 讨论(0)
  • 2020-11-27 07:54

    Probably you have a JRE instead of JDK installed. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477844

    0 讨论(0)
  • 2020-11-27 07:54

    SUPPLEMENT: The answer above is to set the java.home system property within the program. That works for me too, but it's not a very general solution, since you've hard-coded for one jdk version. The alternative that I'm using now is to give the full path to "java" on the command line when I run the program. Such as (consistent with examples above):

    C:\\Program Files\Java\jdk1.7.0_02\jre\bin\java -cp ..\classes path.to.program.myProgram
    

    Giving the full path to the jdk version means that's the version that's running the program, so that's the one that will be fetched with ToolProvider.getSystemJavaCompiler();

    0 讨论(0)
  • 2020-11-27 07:56

    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...:-)

    0 讨论(0)
  • 2020-11-27 07:57

    Its working with Java application by expicitily including the tools.jar but for web application not working. Throwing Nullpointer

    0 讨论(0)
  • 2020-11-27 08:01

    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.

    0 讨论(0)
提交回复
热议问题