主要有以下幾種原因:
1、使用了未初始化的變量(雖然已經(jīng)聲明)
2、使用了未初始化的對(duì)象(雖然已經(jīng)聲明)
3,使用了關(guān)鍵字或已存在的類(lèi)名作變量對(duì)象方法或類(lèi)名。
一般報(bào)java.lang.NullPointerException的原因有以下幾種:
·字符串變量未初始化;
·接口類(lèi)型的對(duì)象沒(méi)有用具體的類(lèi)初始化,比如:
List lt;會(huì)報(bào)錯(cuò)
List lt = new ArrayList();則不會(huì)報(bào)錯(cuò)了
·當(dāng)一個(gè)對(duì)象的值為空時(shí),你沒(méi)有判斷為空的情況。
你可以試著把下面的代碼前加一行代碼:
if(rb!=null && rb!="")
改成:
if(rb==null);
if(rb!==null&&rb!="")
解決步驟:
1、打開(kāi)Console面板,找到出錯(cuò)信息。
2、從打印出來(lái)的信息中找出一個(gè)文件及其出錯(cuò)行數(shù)。
3、在出錯(cuò)行處設(shè)置斷點(diǎn),重新執(zhí)行程序。
4、打開(kāi)Variables視圖,從中查找出錯(cuò)行所用到的所有對(duì)象及其值,如果其中對(duì)象的值為空,則可以進(jìn)一步分析問(wèn)題。
5、如果該行的對(duì)象都不為空而是調(diào)用了一個(gè)函數(shù),則到這個(gè)函數(shù)里設(shè)置斷點(diǎn)(或step into F5 ),繼續(xù)進(jìn)行調(diào)試。這時(shí)需要用F6(執(zhí)行一行),直到再次報(bào)錯(cuò),從而定位到出錯(cuò)處。重復(fù)步驟4.
6、結(jié)束。
如果不會(huì)斷點(diǎn),教你個(gè)狠的,你把用到的變量都輸出出來(lái),就知道誰(shuí)是NULL了,然后在想辦法改正,就簡(jiǎn)單多了
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/aisitemasu/archive/2008/05/29/2493246.aspx