Я пытаюсь использовать Spring LDAP для кодирования.
<ldap-server ldif="classpath:my-ldap-clone.ldif" />
но я получаю эту ошибку
NoClassDefFoundError: org/apache/directory/server/core/DirectoryService
Что я делаю неправильно?
Я пытаюсь использовать Spring LDAP для кодирования.
<ldap-server ldif="classpath:my-ldap-clone.ldif" />
но я получаю эту ошибку
NoClassDefFoundError: org/apache/directory/server/core/DirectoryService
Что я делаю неправильно?
Загрузите ApcheDS по ссылке ниже http://directory.apache.org/ или получите полную банку из здесь Раньше я работал с Spring Security 3.0.5 с LDAP (Spring LDAP 1.3). В тот раз я не выполнил требование ApacheDS. Проверьте свою версию Spring Secuirty, которая может иметь зависимость от ApacheDS.
Используя мавен:
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-all</artifactId>
<version>1.5.7</version>
</dependency>
Если вы используете 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)