Попытка использовать Spring LDAP для кодирования

Я пытаюсь использовать Spring LDAP для кодирования.

<ldap-server ldif="classpath:my-ldap-clone.ldif" />

но я получаю эту ошибку

NoClassDefFoundError: org/apache/directory/server/core/DirectoryService

Что я делаю неправильно?


person SJS    schedule 16.04.2011    source источник


Ответы (3)


Загрузите ApcheDS по ссылке ниже http://directory.apache.org/ или получите полную банку из здесь Раньше я работал с Spring Security 3.0.5 с LDAP (Spring LDAP 1.3). В тот раз я не выполнил требование ApacheDS. Проверьте свою версию Spring Secuirty, которая может иметь зависимость от ApacheDS.

person Senthil    schedule 16.04.2011

Используя мавен:

    <dependency>
        <groupId>org.apache.directory.server</groupId>
        <artifactId>apacheds-all</artifactId>
        <version>1.5.7</version>
    </dependency>
person foa    schedule 11.05.2011
comment
Сомневаюсь, что добавлять такую ​​большую зависимость (10 МБ!), если вам нужна только ее часть, — это хорошая идея. Например, для spring-security-ldap требуется всего 5 jar-файлов, см. здесь: mvnrepository.com/artifact/org.springframework.security/ - person Charles Morin; 15.04.2014
comment
У меня такая же ошибка. Я новичок в Maven, но разве Maven не должен автоматически загружать зависимости? Почему это нужно явно указывать в файле pom.xml моего приложения? Спасибо! - person Tamara Aviv; 05.12.2016

Если вы используете Maven, они на самом деле исходят из необязательной зависимости spring-security-ldap.

Использование apacheds-all — плохая идея, потому что оно включает в себя множество довольно распространенных зависимостей, таких как slf4j и dom4j. Вы легко можете столкнуться с проблемами загрузчика классов.

Вместо этого вам следует заглянуть внутрь pom версии spring-security-ldap, которую вы используете, на наличие необязательных зависимостей apacheds и скопировать их в свой pom без элементов <scope> и <optional> (к сожалению, нет лучшего способа обрабатывать необязательные зависимости с помощью Maven).

Например, с spring-security-ldap 4.2.2, это даст:

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-core</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-core-entry</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-protocol-ldap</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-protocol-shared</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-server-jndi</artifactId>
    <version>1.5.5</version>
</dependency>

(похоже, он не изменился по крайней мере с 3.2)

person Didier L    schedule 13.03.2017