【问题标题】:How to solve java.lang.NullPointerException error? [duplicate]如何解决 java.lang.NullPointerException 错误? [复制]
【发布时间】:2012-05-14 22:13:18
【问题描述】:

当我运行我的 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)

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

【问题讨论】:

  • 如果您需要任何帮助,请提供SSCCE。如果没有 SSCCE,我们将无能为力。谢谢。哦,请考虑将您的问题的标题更改为更具描述性的名称。
  • 堆栈跟踪为您提供了 NullPointerException 出现的确切行。你只需要了解你为什么得到它并修复它......
  • 通过识别问题然后纠正识别的问题来解决。 NPE [应该] 仅在以下情况下发生:someNullExpression.someMember。也就是说,null 值必须是成员/方法的 target 表达式,才能自然发生此异常。在发布的示例中,只有 一个 表达式可以满足此要求。 (提示:compiler 变量的计算结果是什么?)
  • 放松,伙计们。他在问什么是空指针异常。
  • @pst 由于异常在“AnotherClassLoader.loadClass”中,这是否意味着空指针在下游?如果编译器为空,那么它只是 main 中的空指针异常。

标签: java nullpointerexception


【解决方案1】:

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

例如,如果我这样做:

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

代码试图抓取myInteger的intValue,但由于它为null,所以它没有:发生空指针异常。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-24
        • 2022-06-13
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        相关资源
        最近更新 更多