2012-06-14 82 views
2

我運行在Eclipse的應用程序。它產生了6個線程。其中一個線程給出了一個例外:的Java空指針異常 - 堆棧跟蹤空

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); 

上面是什麼原因造成的。 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....) 
+5

很高興看到一些與此相關的代碼。可能是一些事情。 – Austin

+0

聽起來是由線程池吞噬的空指針異常。給我們一些代碼,如奧斯汀Resquest! – jocelyn

+0

添加示例代碼。可能是不完整的,但在這一點上混淆自己還有什麼可能是相關的:) – workwise

回答

0

我聽起來像您遇到在調試運行錯誤,你有沒有嘗試設置一些破發點,看是否可以跟蹤下來的確切位置錯誤是哪裏來的?如果它是一個多線程應用程序,那麼應該考慮如何訪問未初始化的數據,否則這些數據是不可能的。