API компилятора Java NullPointerException - PullRequest
0 голосов
/ 01 октября 2011

Я использую этот код для компиляции файла Java во время выполнения. Прежде всего, вот мое дерево каталогов (в Eclipse).

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

Вот мой код, где я получаю исключение NullPointerException (я уже пытался использовать JDK в качестве моей стандартной виртуальной машины в 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();
}

Вот объект CustonJavaFileObject:

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

Что я делаю не так?

EDIT:

У меня нет JDK в моем PATH (и я не могу его добавить)

Вот мой след стека:

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

1 Ответ

0 голосов
/ 21 октября 2011
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 

вызывает проблему.Укажите, что ваша JRE находится внутри JDK, поскольку в отличие от jdk, jre не предоставляет никаких инструментов.

...