为了账号安全,请及时绑定邮箱和手机立即绑定

HiveMQ Prometheus 扩展 NoClassDefFoundError。无法启动扩展

HiveMQ Prometheus 扩展 NoClassDefFoundError。无法启动扩展

鸿蒙传说 2023-04-19 16:49:01
我正在运行 hivemq mqtt 代理社区版,并希望添加用于监控的 prometheus 扩展。两者都是从hivemq 市场和github 项目页面预编译的。我将这两个组件下载为 zip 文件,解压缩并使用此 dockerfile 将它们复制到 java 11 docker 容器中:FROM alpine:3.10  AS TOOLCHAINADD https://github.com/hivemq/hivemq-community-edition/releases/download/2019.1/hivemq-ce-2019.1.zip /opt/ADD https://www.hivemq.com/releases/extensions/hivemq-prometheus-extension-4.0.1.zip /opt/WORKDIR /optRUN unzip hivemq-ce-* -d ./RUN unzip hivemq-prometheus-extension* -d ./RUN rm -rf hivemq-ce-*.zipRUN rm -rf hivemq-prometheus-extension*.zipRUN mv ./hivemq-ce-* ./hivemqFROM openjdk:11-jdk-slimCOPY --from=TOOLCHAIN /opt/hivemq /opt/hivemqCOPY --from=TOOLCHAIN /opt/hivemq-prometheus-extension /opt/hivemq/extensions/hivemq-prometheus-extensionWORKDIR /opt/hivemq/CMD ["chmod","755","./bin/run.sh"]CMD ["./bin/run.sh"]我想我从操作方法中得到了正确的步骤,但是当我启动容器时docker build -t hive-test .; docker run -p 1883:1883 -p 9399:9399 -t hive-test出现错误。我还下载了代理和扩展源代码,并尝试自己用 maven/gradle 和 java 11 编译它。但结果完全相同。代理运行没有任何错误。有谁知道这里出了什么问题?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

实际上,hivemq broker 社区版的依赖项不包含 ServletContextListener。我从github上下载了源码,修改了build.gradle文件。


将以下代码片段的最后一行添加到 build.gradle 文件中:


/* javax */

[group: 'javax.activation', name: 'activation', version: '1.1.1'],

[group: 'javax.validation', name: 'validation-api', version: '1.1.0.Final'],

[group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'],

[group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'],

编译代理后解压结果并将预编译的扩展添加到扩展目录。


错误消失了,扩展似乎在工作。


查看完整回答
反对 回复 2023-04-19
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信