Jetty 9.4配置时执行--add-to-start命令提示Unknown module错误且模块列表为空的技术问询
解决Jetty 9.4(apt安装版)模块不可用问题
你遇到的核心问题是通过Ubuntu apt包管理安装的Jetty 9.4,模块文件的存储路径和官方手动下载的二进制包结构不一致,导致start.jar无法识别到模块定义,才会出现Unknown module='http'和空模块列表的情况。下面是具体的排查和解决步骤:
1. 确认Jetty模块的实际位置
首先验证apt安装的Jetty模块文件所在目录,在Ubuntu的jetty9包中,模块通常存放在/usr/share/jetty9/modules。执行以下命令查看:
ls /usr/share/jetty9/modules
如果能看到http.mod、deploy.mod这类文件,说明模块确实存在,只是start.jar没找到这个目录。
2. 临时指定模块目录执行命令
在添加模块或查看模块列表时,通过--module-dir参数明确告诉start.jar模块的位置:
- 查看所有可用模块:
java -jar $JETTY_HOME/start.jar --module-dir=/usr/share/jetty9/modules --list-modules
- 添加
http和deploy模块:
java -jar $JETTY_HOME/start.jar --module-dir=/usr/share/jetty9/modules --add-to-start=http,deploy
3. 永久配置模块目录(可选)
为了避免每次命令都要指定--module-dir,可以设置环境变量JETTY_MODULES:
export JETTY_MODULES=/usr/share/jetty9/modules
如果需要永久生效,可以把这行添加到/root/.bashrc或者Jetty的启动配置文件中。
4. 修复权限问题(重要)
你当前的JETTY_BASE设置在/root/jetty-base,而Ubuntu中jetty9服务默认是以jetty用户运行的,后续启动Jetty时可能会出现权限不足的问题。建议:
- 把
JETTY_BASE迁移到jetty用户有权限的目录,比如:
mkdir -p /var/lib/jetty/my-base chown -R jetty:jetty /var/lib/jetty/my-base export JETTY_BASE=/var/lib/jetty/my-base
- 或者修改现有目录的权限:
chown -R jetty:jetty /root/jetty-base
完成以上步骤后,你应该能正常添加和使用Jetty模块了。
内容的提问来源于stack exchange,提问作者Dhaval D
相关产品推荐
相关产品推荐

