Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非空字符串上的NUllPointerException_Java_Nullpointerexception - Fatal编程技术网

Java 非空字符串上的NUllPointerException

Java 非空字符串上的NUllPointerException,java,nullpointerexception,Java,Nullpointerexception,我正在处理一个小的数据库任务,我似乎遇到了一个奇怪的nullPointerException,在那里我找不到问题 以下代码段是错误代码: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at interfaces.FindDueActivityForFriend$1.actionPerformed(FindDueActivityForFriend.java:65) at java.awt.Butt

我正在处理一个小的数据库任务,我似乎遇到了一个奇怪的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次这种特定的方法,没有出现问题,但这次没有

控制台输出(“字符串”);在我调用它之前,我正在调用一个小的控制台窗口,它只打印我告诉它的内容,这是为了在不使用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调试器,它甚至没有进入该方法,它在实际打开该方法之前抛出null指针

我不知道我做错了什么,所以如果有人有任何建议,请张贴他们

为了完整起见,这里还有变量的声明:

    String friendSearch;

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

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

如果它出现在这个if语句中

if(con.GetNameExcists(friendSearch ))

您知道friendSearch不是null,那么con必须是null,以便在if语句中获得NullPointerException。

下面代码的唯一可能性是

 if(con.GetNameExcists(friendSearch ))
con
null
friendSearch
null
,您可以在

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

大多数情况下,它应该是
con为空


尝试在日志中打印
con
值。

如果con.getNameExcists(…)返回Boolean而不是Boolean,并且可能返回null,那么您将从自动取消装箱中获得null点异常。

您描述的所有内容都表明
con
可能是
null
。你是怎么证实它不是的?啊。jup忘了初始化con变量,真不敢相信我只是花了一个小时试图修复字符串,忘了查看con变量jup,正如上面的评论中所述,我看不到它不是字符串而是con变量。。。。很抱歉打扰您,但感谢大家对我的邮件的快速回复failing@Ylva将来解决这个问题的一个简单方法是查看行上的哪些引用在if语句中实际被取消引用,并且在if语句中只有con。好的,那么您要说的是,如果friendSearch为null,它不会在这一行中抛出null指针,但会在使用它的GetNameExcists方法的第一行中抛出它?是的,至少理想情况下是这样,但这可能取决于编译器。行信息有时不能完美地翻译,您最终会得到一个不正确的行号,至少在某种程度上接近实际行号。我不记得我是否在Java中见过这种情况,尽管我使用了Oracle实现,但我肯定在我使用过的其他一些语言中见过这种情况。在这种情况下,如果friendSearch为null,那么这与调用GetNameExcists(null)是一样的,最终GetNameExcists将尝试在它自己的一行代码上遵从该null值,并且您将在那里得到异常。感谢您的详细解释,我已经运行了一些测试,并且确实知道在哪里执行GetNameExcists(null)(当确保变量为空时)然后它确实会继续运行,直到在该方法中,我不知道java的行为是这样的,但在以后的调试问题中我会记住这一点。它返回一个布尔值,但如上所述,问题在于con变量的初始化