我正在使用此代碼在運行時編譯Java文件。首先,這裏是我的目錄樹(在Eclipse中)。Java編譯器API空指針異常
+---- 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);
}
}
我在做什麼錯?
編輯:
我沒有在我的道路的JDK(我不能添加的話)
這裏是我的堆棧跟蹤:
java.lang.NullPointerException
at package.Compiler.compile(Compiler.java:20)
at package.Interactive.main(Interactive.java:19)
您應該包含堆棧跟蹤。 –
編譯器可能在您的系統中不可用。檢查ToolProvider API,它會說如果沒有提供編譯器,getSystemJavaCompiler將返回null。 –
@HovercraftFullOfEels JDK不在我的PATH中,我不能添加它,但即使當我將JDK用作我的StandardVM時,它仍然不起作用。 – LanguagesNamedAfterCofee