1

実行時に Java ソース ファイルをコンパイルするプロジェクトを作成しています。

私が抱えている問題は、StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);行が NullPointerException をスローすることです。

誰でもこれを修正できますか?

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();

StandardJavaFileManager fileManager = compiler.getStandardFileManager(
        diagnostics, null, null);

System.out.println("Searching for scripts...");

File[] javaFiles = src.listFiles(new FilenameFilter() {
    public boolean accept(File src, String name) {
        return name.toLowerCase().endsWith(".java");
    }
});

Iterable<? extends JavaFileObject> compilationUnits = fileManager
        .getJavaFileObjectsFromFiles(Arrays.asList(javaFiles));

JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
        diagnostics, null, null, compilationUnits);
4

1 に答える 1

2

JavaDocからgetSystemJavaCompiler():

戻り値: このプラットフォームで提供されているコンパイラ、またはコンパイラが提供されていない場合は null

存在しないシステム コンパイラの最も可能性の高い原因は、コンパイラを提供しない JRE (Java ランタイム環境) でプログラムを実行していることです。代わりに JDK (Java Development Kit) 環境を使用してみてください。

于 2013-03-30T21:17:29.900 に答える