1. 程式人生 > 其它 >Debug - 某個方法一直報NPE錯,無論怎麼加防禦式程式設計、try catch均無效

Debug - 某個方法一直報NPE錯,無論怎麼加防禦式程式設計、try catch均無效

問題描述

最初的錯誤是,在fane-lib-java包裡,出現了NPE異常。

我的應用程式,引用了一個fane-lib-java包。lib包中的fane-core 和 fane-data-sdk-plus兩個module.

由於在本地windows機器local debug、直接執行、滑鼠追蹤,均是定位到 fane-core的QuantScenarioDefModel.java,因此我只在fane-core這裡修復了NPE。

然而,一旦部署到at、sit 環境的Linux伺服器,就會出現NPE異常

報錯方法已經按照堆疊提示增加了防禦式程式設計,但無論加上什麼log都不會進入該方法。

同時,也確定了伺服器上使用的是最新的包了,但依然無解。

解決方法

使用(右鍵-》Find Usage)查詢可疑欄位、可疑方法的使用情況,發現 另一個module fane-data-sdk-plus下面存在一個“同包同名”的類。該類尚未更新。

因此推測:

  • 在windows系統,由於某些原因,會優先載入 fane-core裡面的QuantScenarioDefModel.java類
  • 在Linux系統,由於某些原因,會優先載入 fane-data-sdk-plus裡面的QuantScenarioDefModel.java類

workaround是:將兩個類同時進行修改。