【问题标题】:Java Null Pointer Exception - Stack Trace NullJava Null 指针异常 - 堆栈内存溢出
【发布时间】:2020-12-01 14:00:57
【问题描述】:

我在 Eclipse 中运行一个应用程序。它产生 6 个线程。其中一个线程给出了异常:

com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException

堆栈跟踪是:null

我正在使用日食。并且无法完成这些步骤(调试面板提供了一个非常顶级的函数跟踪异常发生的位置,这对于找到根本原因没有用处)。

如何调试这个异常?

我是 Java 新手(虽然有 C++ 经验),可能错过了一些重要信息。


以下是一些相关代码:

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;

Cache<BubbleKey, List<BlockData>> thecache;
// Above is initialized somewhere.. bit complex and code distributed across various file

//Somewhere else
List<BlockData>> __ll = thecache.getUnchecked(keydata);

以上是导致它的原因。密钥数据已正确初始化。它可能在查找/比较键函数中,但我无法到达那里,因为没有堆栈跟踪。


更多!在某些运行中,我得到了更多的调试输出。不过还是不知道怎么分析。

下面的异常是一个不同的异常,发生在后面的阶段,在上述异常在程序中发生了 3-4 次之后。对于上述异常,正如我所提到的,从来没有任何堆栈跟踪。

at com.google.common.cache.CustomConcurrentHashMap$ComputedUncheckedException.get(CustomConcurrentHashMap.java:3305) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.compute(CustomConcurrentHashMap.java:3441) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.CustomConcurrentHashMap$Segment.compute(CustomConcurrentHashMap.java:2322) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.CustomConcurrentHashMap$Segment.getOrCompute(CustomConcurrentHashMap.java:2291) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.CustomConcurrentHashMap.getOrCompute(CustomConcurrentHashMap.java:3802) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.ComputingCache.get(ComputingCache.java:46) ~[guava-10.0.1.jar:na]
    at com.google.common.cache.AbstractCache.getUnchecked(AbstractCache.java:49) ~[guava-10.0.1.jar:na]
 (at myfunction.... )

【问题讨论】:

  • 很高兴看到一些与此相关的代码。可能有很多东西。
  • 听上去是被线程池吞噬的空指针异常。给我们一些代码作为 Austin resquest !
  • 添加了示例代码。可能不完整,但在这一点上我自己很困惑还有什么相关的:)
  • 您需要locks 才能同时修改多个线程使用的对象。
  • 小心,在 guava 缓存上的 getunchecked 已被弃用。我们可以看看你的缓存加载器或缓存构建器实现吗?

标签: java eclipse nullpointerexception jit


【解决方案1】:

听起来您在调试时遇到了错误,您是否尝试过设置一些断点并查看是否可以准确追踪错误的来源?如果它是一个多线程应用程序,您应该考虑如何访问未初始化的数据,否则无法访问。

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2017-09-27
    • 2016-08-17
    • 2016-02-19
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多