【问题标题】:Trying to use Spring LDAP for coding尝试使用 Spring LDAP 进行编码
【发布时间】:2011-08-07 01:45:51
【问题描述】:

我正在尝试使用 Spring LDAP 进行编码

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

但我收到此错误

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

我做错了什么?

【问题讨论】:

    标签: java spring spring-security spring-ldap apacheds


    【解决方案1】:

    如果您使用的是 Maven,这些实际上来自 spring-security-ldap 的可选依赖项。

    使用apacheds-all 是个坏主意,因为它嵌入了许多相当常见的依赖项,例如 slf4j 和 dom4j。你会很容易遇到类加载器问题。

    相反,您应该查看您正在使用的 spring-security-ldap 版本的 pom 中的 apacheds 可选依赖项,并将它们复制到没有 &lt;scope&gt; 和 &lt;optional&gt; 元素的 pom 中(不幸的是,有没有更好的方法来处理 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 开始就没有改变过)

    【讨论】:

      【解决方案2】:

      使用maven:

          <dependency>
              <groupId>org.apache.directory.server</groupId>
              <artifactId>apacheds-all</artifactId>
              <version>1.5.7</version>
          </dependency>
      

      【讨论】:

      • 如果您只需要其中的一小部分,我怀疑添加这么大的依赖项(10MB!)是个好主意。例如,spring-security-ldap 只需要 5 个罐子,见这里:mvnrepository.com/artifact/org.springframework.security/…
      • 我有同样的错误。我是 Maven 新手,但 Maven 不应该自动下载依赖项吗?为什么需要在我的应用程序的 pom.xml 中明确指定?谢谢!
      【解决方案3】:

      从以下链接下载 ApcheDS http://directory.apache.org/ 或从 here 获取完整的 jar 我曾经使用 LDAP (Spring LDAP 1.3) 使用 Spring Security 3.0.5。那个时候我没有满足 ApacheDS 的要求。检查您的 Spring Secuirty 版本,它可能与 ApacheDS 有依赖关系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        相关资源
        最近更新 更多