1

在执行 answer.nextElement() 时,我在 jre 中有一个错误

java.lang.NullPointerException:在 com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:111) ~[na:1.6.0_31] 在 com.sun.jndi.ldap.LdapNamingEnumeration.nextAux(LdapNamingEnumeration.java) 处为空:245) ~[na:1.6.0_31] at com.sun.jndi.ldap.LdapNamingEnumeration.nextImpl(LdapNamingEnumeration.java:236) ~[na:1.6.0_31] at com.sun.jndi.ldap.LdapNamingEnumeration.next (LdapNamingEnumeration.java:184) ~[na:1.6.0_31] at com.sun.jndi.ldap.LdapNamingEnumeration.nextElement(LdapNamingEnumeration.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();
        ...
        }

我不知道去哪里调查。

最好的,

4

1 回答 1

1

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

在达到 maxResults 限制时迭代NamingEnumerator并执行hasMore方法时,引发了异常SizeLimitExceededException(这是预期的)。

问题是,如果在引发异常之后,您再次在NamingEnumerator上执行hasMore方法,而不是返回 false(正如预期的那样,因为 maxResults execption 已经引发)它返回 TRUE,并且对nextElement的以下调用失败并出现NullPointerException你得到了。

于 2013-11-12T15:13:42.050 回答