非null String上的NUllPointerException

时间:2014-05-14 18:20:14

标签: java nullpointerexception

我正在进行一个小型数据库分配,我似乎得到一个奇怪的nullPointerException,我找不到问题

以下代码段是错误:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at interfaces.FindDueActivityForFriend$1.actionPerformed(FindDueActivityForFriend.java:65)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

正如您所看到的,在FindDueActivityForFriend类的65中出现了问题,并且在此代码段中更具体:

    friendSearch = friendSearchField.getText();
            console.out("Searching for the name that was entered");
            console.out("friendSearch variable is: " + friendSearch );

            if(con.GetNameExcists(friendSearch )){
//more code

错误发生在if语句中。 在此if语句中,调用连接到数据库的类,检查数据库中是否已存在名称,如果该名称已存在于数据库中,则返回true。

我在程序周围使用了这个特定的方法大约10次没有问题,但这次没有。

console.out(“String”);我之前调用的是一个小型控制台窗口,我只是打印出我告诉它的内容,这是在没有运行应用程序时使用控制台,例如eclipse。

我尝试打印变量只是为了看它是什么,它不是空的。 以下是控制台的复制粘贴:

    [Wed May 14 20:04:26 CEST 2014] [INFO] Opened the findDueForFriend screen
    [Wed May 14 20:04:30 CEST 2014] [INFO] Searching for the name that was entered
    [Wed May 14 20:04:30 CEST 2014] [INFO] FriendSearch variable is: Ylva

我进入了蚂蚁调试器,甚至没有进入方法,它在实际打开方法之前抛出了nullpointer

我不知道自己做错了什么,所以如果有人有任何建议请发帖。

为了完整性,这里是变量的声明:

    String friendSearch;

public FindDueActivityForFriend(Console Console){
    console = Console;
    friendSearch = "";

我甚至尝试将String声明为空字符串,不确定是否使它不为null但我认为应该是,并且控制台窗口清楚地显示字符串在抛出nullpointer异常之前包含某些内容...

3 个答案:

答案 0 :(得分:0)

如果它出现在这个if语句

if(con.GetNameExcists(friendSearch ))

并且你知道friendSearch不为null,然后con必须为null,以便在if语句中获得NullPointerException。

答案 1 :(得分:0)

以下代码的唯一可能性是

 if(con.GetNameExcists(friendSearch ))

con nullfriendSearchnull,您可能会访问

开始该方法并执行某些操作,如friendSearch.caoncat或其他。

看起来应该是con is null

尝试在日志中打印con值。

答案 2 :(得分:0)

如果con.getNameExcists(...)返回布尔而不是布尔值并且可能返回null,那么您将从自动取消装箱中获得NullPointerException。