2014-05-14 34 views
-3

我工作的一个小型的数据库任务,我似乎得到一个奇怪的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出现的问题,并在此代码段更具体的:在if语句出现

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语句中,调用一个连接到数据库的类,检查名称是否已经存在于数据库中,如果该名称已存在于数据库中,则返回true。

我在程序周围使用了10次左右的特定方法,没有问题,但现在还没有。 (“String”);

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 

我去到Ant调试,并没有即使在方法去,它实际上打开方法

我不前抛出空指针我不知道我做错了什么,所以如果任何人有任何建议,请张贴他们。

只是为了完整性这里是可变的藏汉声明:

String friendSearch; 

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

我甚至尝试声明字符串为空字符串,不知道这使得它不为空,但我认为它应该和控制台窗口中清楚地表明,字符串中包含的东西抛出空指针异常之前...

+1

是'con''null'? –

+0

你所描述的一切都表明'con'可能是'null'。你怎么证实它不是? – David

+0

呃facepalm。 jup忘了初始化con变量,不敢相信我花了一个小时试图修复字符串,并忘记看con变量 – Ylva

回答

0

如果if语句

if(con.GetNameExcists(friendSearch)) 

一个它发生在这nd你知道friendSearch不是null,那么con必须为null,以便在if语句中获得NullPointerException。

+0

Jup,正如上面的评论所述,我是盲目的看到它不是字符串,但变量变量....对不起,但感谢你们所有人对我的失败的快速反应 – Ylva

+0

@Ylva未来解决这个问题的一个简单的方法是看看哪些参考线实际上被解除引用在if语句中,并在if语句中只有con。 – NESPowerGlove

+0

好吧所以你在说什么,如果friendSearch为空,它不会抛出nullPointer在这一行,但会把它放在GetNameExcists方法的第一行,它将被使用? – Ylva

0

与下面的代码的唯一的可能性是

if(con.GetNameExcists(friendSearch)) 

要么connullfriendSearchnull你可能在方法的

begining被访问和像friendSearch.caoncat什么执行一些操作。

大部分应该是con is null看来。

尝试在日志内打印con值。

0

如果con.getNameExcists(...)返回布尔值而不是布尔值并且可能返回null,那么您会从自动拆箱中得到一个NullPointerException。

+0

它返回一个布尔值,但如上所述,问题出在con变量的初始化 – Ylva

相关问题