You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 12/Proxmox 8下ApacheDS安装后启动失败求助

问题:Debian 12 + Proxmox 8 环境下 ApacheDS 启动失败(缺失SLF4J依赖)

环境与操作背景

  • 系统:全新Debian 12,手动安装Proxmox 8并完成全量软件包更新
  • 操作:通过apt-get install apacheds安装ApacheDS,自动依赖安装包含default-jre-headless
  • 故障:ApacheDS无法启动,手动安装完整default-jre并全局设置JAVA_HOME=/usr/lib/jvm/default-java后,错误依旧

报错详情

执行systemctl status apacheds得到以下输出:

× apacheds.service - Apache Directory Server
     Loaded: loaded (/lib/systemd/system/apacheds.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Mon 2024-05-20 22:02:06 CEST; 1min 20s ago
   Duration: 134ms
    Process: 351775 ExecStart=/bin/sh -c exec              ${JAVA_HOME}/bin/java ${JAVA_OPTS}                -Dapacheds.controls=${ADS_CONTROLS}               >
   Main PID: 351775 (code=exited, status=1/FAILURE)

May 20 22:02:06 lab30 systemd[1]: Started apacheds.service - Apache Directory Server.
May 20 22:02:06 lab30 sh[351775]: Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
May 20 22:02:06 lab30 sh[351775]:         at org.apache.directory.server.UberjarMain.<clinit>(UberjarMain.java:48)
May 20 22:02:06 lab30 sh[351775]: Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
May 20 22:02:06 lab30 sh[351775]:         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
May 20 22:02:06 lab30 sh[351775]:         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
May 20 22:02:06 lab30 sh[351775]:         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
May 20 22:02:06 lab30 sh[351775]:         ... 1 more
May 20 22:02:06 lab30 systemd[1]: apacheds.service: Main process exited, code=exited, status=1/FAILURE
May 20 22:02:06 lab30 systemd[1]: apacheds.service: Failed with result 'exit-code'.

解决方案

1. 手动安装缺失的SLF4J依赖

Debian官方仓库中的apacheds包存在依赖遗漏,需要手动安装SLF4J核心库:

apt-get install libslf4j-java

2. 修复systemd服务的类路径配置

编辑ApacheDS的systemd服务文件,确保Java类路径包含SLF4J的jar包:

nano /lib/systemd/system/apacheds.service

找到ExecStart行,在${JAVA_OPTS}后添加SLF4J的jar路径(通常为/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-simple.jar),修改后的ExecStart示例:

ExecStart=/bin/sh -c exec ${JAVA_HOME}/bin/java ${JAVA_OPTS} -cp "/usr/share/java/apacheds.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-simple.jar" -Dapacheds.controls=${ADS_CONTROLS} org.apache.directory.server.UberjarMain ${ADS_INSTANCE}

3. 重新加载systemd并重启服务

systemctl daemon-reload
systemctl restart apacheds

4. 验证服务状态

systemctl status apacheds

若服务显示active (running),则说明问题已解决。

内容的提问来源于stack exchange,提问作者Sieciowy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:32:31