首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaCompiler时出现Nullpointerexception错误

使用JavaCompiler时出现Nullpointerexception错误
EN

Stack Overflow用户
提问于 2013-08-08 13:49:58
回答 5查看 4.5K关注 0票数 1

以下是用eclipse编写的Java代码..。

代码语言:javascript
复制
package compile;

import java.io.IOException;
import java.util.Arrays;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;

public class Execute {
    public static void main(String args[]) throws IOException, ClassNotFoundException {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(
                diagnostics, null, null);
        Iterable<? extends JavaFileObject> compilationUnits = fileManager
                .getJavaFileObjectsFromStrings(Arrays
                        .asList("F:\\practice java\\project\\KeepingMoreKidsQuiet.java"));
        JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
                diagnostics, null, null, compilationUnits);
        boolean success = task.call();

        System.out.println(success);
        if(!success)
            System.out.println(diagnostics.getDiagnostics());
        fileManager.close();
    }
}

当我运行我的Java程序时,它在这一行上给出了一个错误

代码语言:javascript
复制
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);

我所犯的错误是:

线程"main“java.lang.NullPointerException at compile.Execute.main(Execute.java:17)中的异常

你能告诉我如何解决这个错误吗?

EN

回答 5

Stack Overflow用户

发布于 2013-08-08 13:53:23

来自ToolProvider.getSystemJavaCompiler()

返回: 如果没有提供编译器,则此平台null 或提供的编译器。

票数 4
EN

Stack Overflow用户

发布于 2014-12-26 14:16:23

这通常是在使用JRE而不是JDK运行程序时出现的。

IDE类似Eclipse,检测JRE路径并将其设置为Java程序的运行路径。如果您正在使用Eclipse,那么在构建路径内使用JDK路径设置新VM (默认情况下使用JRE路径)

如果直接从命令提示符运行,那么检查类路径。

票数 2
EN

Stack Overflow用户

发布于 2013-08-08 13:51:32

在这一行中,编译器引用可能为空,JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

尝试在路径的开头设置%JAVA_HOME%\bin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18127806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档