Java 在LDAP searchResult上执行nextElement时执行NPE

Java 在LDAP searchResult上执行nextElement时执行NPE,java,jakarta-ee,nullpointerexception,jndi,Java,Jakarta Ee,Nullpointerexception,Jndi,我在jre中执行answer.nextElement()时出错 java.lang.NullPointerException:在 com.sun.jndi.ldap.ldapnaminguimeration.getNextBatch(ldapnaminguimeration.java:111) ~(na:1.6.031]at LdapNamingEnumeration.nextAux(LdapNamingEnumeration.java:245) ~(na:1.6.031]at LdapNami

我在jre中执行answer.nextElement()时出错

java.lang.NullPointerException:在 com.sun.jndi.ldap.ldapnaminguimeration.getNextBatch(ldapnaminguimeration.java:111) ~(na:1.6.031]at LdapNamingEnumeration.nextAux(LdapNamingEnumeration.java:245) ~(na:1.6.031]at LdapNamingEnumeration.nextImpl(LdapNamingEnumeration.java:236) ~(na:1.6.031]at 下一步(ldapnaminguenumeration.java:184) ~(na:1.6.031]at ldapnaminguimeration.nextElement(ldapnaminguimeration.java:88) ~[na:1.6.0_31]

这是我的密码:

        LdapContext ctx = ...;
        NamingEnumeration<SearchResult> answer = ctx.search(...);

        if (answer.hasMoreElements()) {
            ...
        }

        while (answer.hasMoreElements()) {
                String grpName = answer.nextElement().getAttributes().get("xxx").get().toString();
        ...
        }
LdapContext ctx=。。。;
namingumerationanswer=ctx.search(…);
if(answer.hasMoreElements()){
...
}
while(answer.hasMoreElements()){
字符串grpName=answer.nextElement().getAttributes().get(“xxx”).get().toString();
...
}
我不知道去哪里调查


最好的是,这件事发生在我身上。我遇到的问题是,我在LDAP搜索中定义了maxResults控件

当达到maxResults限制时,迭代NamingUMerator并执行hasMore方法时,引发异常SizeLimitExceedeException(这是预期的)


问题是,如果在引发异常后,您在NamingUMerator上再次执行hasMore方法,而不是返回false(正如预期的那样,因为maxResults执行选项已被引发),它将返回TRUE,下面对nextElement的调用失败,出现了NullPointerException

这发生在我身上。我遇到的问题是,我在LDAP搜索中定义了maxResults控件

当达到maxResults限制时,迭代NamingUMerator并执行hasMore方法时,引发异常SizeLimitExceedeException(这是预期的)


问题是,如果在引发异常后,您在NamingUMerator上再次执行hasMore方法,而不是返回false(正如预期的那样,因为maxResults执行选项已被引发),它将返回TRUE,下面对nextElement的调用失败,出现NullPointerException

您能告诉我们哪一行是111号吗?这是LdapNamingEnumeration.getNextBatch的代码吗?您有多少个节点?因此:要进行调查,首先要将长线分成几个语句。这将帮助您确定表达式的哪一部分为null。只是一个猜测,但我认为您到达的节点没有“xxx”属性…@Olivier Letchti,NPE不在我的代码中,而是在ldapnaminguation.getNextBatch中,因此语句在以下表达式中:answer.nextElement()。@Valentin Ruano。这不是ldapnaminguemeration.getNextBatch的代码,而是我自己的代码。执行以下操作时引发错误:answer.nextElement()您能告诉我们哪一行是111号吗?这是LdapNamingEnumeration.getNextBatch的代码吗?您有多少个节点?因此:要进行调查,首先要将长线分成几个语句。这将帮助您确定表达式的哪一部分为null。只是一个猜测,但我认为您到达的节点没有“xxx”属性…@Olivier Letchti,NPE不在我的代码中,而是在ldapnaminguation.getNextBatch中,因此语句在以下表达式中:answer.nextElement()。@Valentin Ruano。这不是ldapnaminguemeration.getNextBatch的代码,而是我自己的代码。执行以下操作时引发错误:answer.nextElement()