在做answer.nextElement()时,jre内部出现错误


  java.lang.NullPointerException:在时为null
  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]在
  com.sun.jndi.ldap.LdapNamingEnumeration.nextImpl(LdapNamingEnumeration.java:236)
  〜[na:1.6.0_31]在
  com.sun.jndi.ldap.LdapNamingEnumeration.next(LdapNamingEnumeration.java:184)
  〜[na:1.6.0_31]在
  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();
        ...
        }


我不知道要去哪里调查。

最好,

最佳答案

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

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

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

关于java - NPE在LDAP searchResult上执行nextElement时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13015379/

10-09 04:58