我在执行answer.nextElement()
时在jre中有错误java.lang.NullPointerException:null at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:111) 〜[na:1.6.0_31] at 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();
...
}
我不知道在哪里调查。
最佳,
答案 0 :(得分:1)
这发生在我身上。我遇到的问题是我在LDAP搜索中定义了 maxResults 控件。
在达到maxResults限制时迭代 NamingEnumerator 并执行 hasMore 方法时,引发了异常 SizeLimitExceededException (这是预期的)
问题在于,如果在引发异常后,再次对 NamingEnumerator 执行 hasMore 方法,而不是返回false(正如预期的那样,因为maxResults execption是已经提出)它返回TRUE,并且对 nextElement 的以下调用因你得到的 NullPointerException 而失败。