Java Compiler API NullPointerException

痴心易碎 提交于 2020-01-06 11:55:06

问题


I am using this code to compile a Java file at runtime. First of all, here is my directory tree (in Eclipse).

+---- src
+----- package
+------ Compile.java
+
+
+---- temp
+----- anotherpackage
+------ Temp.java (file to compile)

Here is my code where I am getting the NullPointerException (I already tried using JDK as my Standard VM in Eclipse).

public static void compile(URI path, InputStream is, OutputStream os, OutputStream err) throws IOException {
    SimpleJavaFileObject source = new CustomJavaFileObject(path, Kind.SOURCE);
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    JavaCompiler.CompilationTask task = compiler.getTask(new PrintWriter(err), null, null, null, null, Arrays.asList(source));
    task.call();
}

Here is the CustonJavaFileObject:

class CustomJavaFileObject extends SimpleJavaFileObject {
    protected CustomJavaFileObject(URI uri, Kind kind) {
        super(uri, kind);
    }
}

What am I doing wrong?

EDIT:

I do not have the JDK in my PATH (and I can't add it)

Here is my stack trace:

java.lang.NullPointerException 
  at package.Compiler.compile(Compiler.java:20)
  at package.Interactive.main(Interactive.java:19)

回答1:


JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 

causes the issue. Point your JRE to be inside the JDK as unlike jdk, jre does not provide any tools.



来源:https://stackoverflow.com/questions/7616886/java-compiler-api-nullpointerexception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!