我正在使用此代码在运行时编译 Java 文件。首先,这是我的目录树(在 Eclipse 中)。
+---- src
+----- package
+------ Compile.java
+
+
+---- temp
+----- anotherpackage
+------ Temp.java (file to compile)
这是我得到 NullPointerException 的代码(我已经尝试在 Eclipse 中使用 JDK 作为我的标准 VM)。
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);
}
}
我究竟做错了什么?
编辑:
我的 PATH 中没有 JDK(我无法添加它)
这是我的堆栈跟踪:
java.lang.NullPointerException
at package.Compiler.compile(Compiler.java:20)
at package.Interactive.main(Interactive.java:19)