【问题标题】:Java LDAP Error while doing the lookup查找时出现 Java LDAP 错误
【发布时间】:2012-06-18 14:07:09
【问题描述】:

我正在查找 Sun One LDAP 中的对象并得到以下异常:

javax.naming.NamingException:使用对象工厂生成对象时出现问题 [Root
异常是 java.lang.IllegalAccessException:类 javax.naming.spi.NamingManager 可以
不使用修饰符“public”访问 com.ldap.java.LDAPFactory 类的成员];其余的 名称 cn=favorite,dc=xxx,dc=abc,dc=cdf'

在下面给出的“Read Object back”代码中引发了异常:

        Fruit fruit = new Fruit("orange", "sweet and sour");

        // Perform bind
        ctx.bind("cn=favorite,dc=xxx,dc=abc,dc=cdf", fruit);
        logger.info("Entry bind...Complete");

        // Read object back
        Object f2 = ctx.lookup("cn=favorite,dc=xxx,dc=abc,dc=cdf");
        logger.info("Fruit = " + f2);

        // Read attributes to see encoding
        Attributes attrs = 
                    ctx.getAttributes("cn=favorite,dc=xxx,dc=abc,dc=cdf");
        logger.info("Atrributes = " + attrs);

        // Close the context when we're done
        ctx.close()

谁能告诉我代码有什么问题?

--

Tks 巴拉特

【问题讨论】:

  • 类路径中似乎缺少一些 jar。
  • 我不认为缺少任何罐子。如果 jar 丢失,那么异常应该类似于 classnotfoundexception。
  • 它正在尝试反射,根据 java doc 可能是由于找不到 classdef docs.oracle.com/javase/6/docs/api/java/lang/…

标签: java ldap-query


【解决方案1】:

我已经通过以下代码解决了这个问题:

现有代码:

    String classname = Fruit.class.getName();
    StringRefAddr classref = new StringRefAddr("java:".concat(name), fruit + ":" + fruitType);
    String classfactoryname = FruitFactory.class.getName();

    Reference ref = new Reference(classname, classref, classfactoryname, null);

    logger.info("getReference(): END");

    return ref;

新代码:

    String classname = Fruit.class.getName();
    StringRefAddr classref = new StringRefAddr("java:".concat(name), fruit + ":" + fruitType);
    //String classfactoryname = FruitFactory.class.getName();

    Reference ref = new Reference(classname, classref);

    return ref;

--


巴拉特

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2021-07-04
    • 2019-02-10
    相关资源
    最近更新 更多