在做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/