Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trying to use Spring LDAP for coding

I am trying to use Spring LDAP for coding

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

but I get this error

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

What am I doing wrong?

like image 724
SJS Avatar asked Apr 16 '11 21:04

SJS


2 Answers

Using maven :

    <dependency>
        <groupId>org.apache.directory.server</groupId>
        <artifactId>apacheds-all</artifactId>
        <version>1.5.7</version>
    </dependency>
like image 67
foa Avatar answered Sep 22 '22 20:09

foa


If you are using Maven, these actually come from an optional dependency of spring-security-ldap.

Using apacheds-all is a bad idea because it embeds a lot of rather common dependencies, like slf4j and dom4j. You would easily get into classloader issues with it.

Instead, you should look inside the pom of the spring-security-ldap version your are using, for the apacheds optional dependencies, and copy them over to your pom without the <scope> and <optional> elements (unfortunately there is no better way to handle optional dependencies with Maven).

For instance, with spring-security-ldap 4.2.2, it would give:

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

(it looks like it hasn't changed since at least 3.2)

like image 42
Didier L Avatar answered Sep 22 '22 20:09

Didier L