所以,我正在尝试在 java 中实现 LDAP 连接...这需要com.sun.jndi.ldap.LdapCtxFactory
。贾芬德表明LdapCtxFactory
应包含在rt.jar
,据我了解,这是java SDK的基础。 Eclipse 找不到它(我正在尝试导入它)。
我之前遇到了与此类似的问题,但我通过安装包含它的 jar 解决了它......现在我非常困惑,因为它包含的 jar 是默认 jar?
Note这也是 Android 项目的一部分。这会有所不同吗?
Edit
我使用这个包的地方如下:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapHost);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user + "@" + domain);
env.put(Context.SECURITY_CREDENTIALS, pass);
然后我使用哈希表创建上下文:
ctxGC = new InitialLdapContext(env, null);
所以,既然我没有com.sun
,我无法在哈希表中提供它。我还需要第一行吗?我不太确定它的用途是什么...
Eclipse 隐藏了不属于核心 Java API 的特定于实现的类它的概念是“访问规则”。 http://help.eclipse.org/indigo/topic/org.eclipse.jdt.doc.user/concepts/concept-access-rules.htm您可以覆盖此设置,但这样做很危险。例如,我非常怀疑 Sun 的实现在 Android 设备上不可用。
相反,只需创建一个正确类型的初始上下文, http://download.oracle.com/javase/6/docs/api/javax/naming/ldap/InitialLdapContext.html并让框架找到正确的实现来支持它:
LdapContext ctx = new InitialLdapContext();
try {
/* Use the context... */
} finally {
ctx.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)