48

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

compiler.getTask(null, null, new DiagnosticCollector<JavaFileObject>(), null, null, compilationUnits);

我得到的错误是:

Exception in thread "main" java.lang.NullPointerException
    at AnotherClassLoader.loadClass(test.java:58)
    at test.main(test.java:30)
    at Main.main(Main.java:68)

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

4

3 回答 3

82

NullPointerException 表示您传递的变量之一为空,但代码尝试使用它,但实际上并非如此。

例如,如果我这样做:

Integer myInteger = null;
int n = myInteger.intValue();

代码尝试获取 myInteger 的 intValue,但由于它为 null,因此它没有:发生空指针异常。

这意味着您的 getTask 方法期望的不是空值,但您传递的是空值。弄清楚 getTask 需要什么并传递它想要什么!

于 2012-05-05T18:09:24.473 回答
7

当您尝试引用空对象实例时会发生此错误。我无法通过您给定的信息告诉您导致此错误的原因,但您可以在 IDE 中轻松调试它。我强烈建议您使用异常处理来避免意外的程序行为。

于 2012-05-05T18:08:52.270 回答
2

只是在黑暗中拍摄(因为您没有compiler与我们分享初始化代码):您检索compiler导致问题的方式。将您的 JRE 指向 JDK 内部,因为与 jdk 不同,jre 不提供任何工具,因此导致NPE.

于 2012-05-05T18:13:58.177 回答