このコードを使用して、実行時に Java ファイルをコンパイルしています。まず、これが私のディレクトリ ツリーです (Eclipse の場合)。
+---- src
+----- package
+------ Compile.java
+
+
+---- temp
+----- anotherpackage
+------ Temp.java (file to compile)
NullPointerException を取得しているコードを次に示します (Eclipse で標準 VM として JDK を使用しようとしました)。
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)