Ошибка Java LDAP при поиске

Я выполняю поиск объекта в Sun One LDAP и получаю исключение, приведенное ниже:

javax.naming.NamingException: проблема с созданием объекта с использованием фабрики объектов [Корневым
исключением является java.lang.IllegalAccessException: класс javax.naming.spi.NamingManager не может
получить доступ к члену класса com.ldap. java.LDAPFactory с модификаторами "public"]; оставшееся имя cn=favorite,dc=xxx,dc=abc,dc=cdf'

Исключение выдается в приведенном ниже коде, где «Прочитать объект обратно»:

        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()

Может кто-нибудь сказать мне, что не так в коде?

--

Ткс Бхарат


person Bharat    schedule 18.06.2012    source источник
comment
Кажется, что некоторые банки отсутствуют в пути к классам.   -  person kosa    schedule 18.06.2012
comment
Я не думаю, что какая-то банка пропала. если банка отсутствовала, тогда исключение должно быть похоже на classnotfoundexception.   -  person Bharat    schedule 18.06.2012
comment
Он пытается отразить, согласно java-документу, это может быть связано с тем, что classdef не найден docs.oracle.com/javase/6/docs/api/java/lang/   -  person kosa    schedule 18.06.2012


Ответы (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;

--
Ткс
Бхарат

person Bharat    schedule 19.06.2012