如何修复 HiveMQ 客户端中未定义的 MqttChannelInitializer 构造函数?

How to fix undefined MqttChannelInitializer constructor in HiveMQ Client?

我使用的是 HiveMQ 客户端 1.0.1 版,但我决定更新到最近发布的 1.1 版。我完全从头开始,将项目作为 Gradle 项目导入并尝试构建。只有在忽略一些失败的测试后,构建才会工作。我在 3 个不同的 类 中收到 3 个错误。我意识到这可能与 Dagger 依赖注入工具有关,并且我已经成功构建了项目并将 build/generated/source/apt/main/ 的目录添加到我的构建路径中,正如我之前遇到问题的堆栈 post 所指出的那样未找到 DaggerSingletonComponent:。这似乎是一个新问题,我不确定出了什么问题。我尝试按项目重建,但错误仍然存​​在。我在下面留下了一些屏幕截图以及具体错误。

HiveMQ:

https://github.com/hivemq/hivemq-community-edition

https://github.com/hivemq/hivemq-mqtt-client

错误:

构造函数 MqttChannelInitializer(MqttClientConfig, MqttConnAckFlow, MqttEncoder, MqttConnectHandler, MqttDisconnectHandler, MqttAuthHandler, Lazy) 未定义

构造函数 MqttSession(MqttClientConfig, MqttSubscriptionHandler, MqttIncomingQosHandler, MqttOutgoingQosHandler) 未定义

ConnectionModule 类型中的方法 provideBootstrap(NettyEventLoopProvider, MqttChannelInitializer) 不适用于参数 (MqttClientConfig, NettyEventLoopProvider, MqttChannelInitializer)

截图:

在命令行上执行 ./gradlew clean build 将修复您的错误。

但我也认为您的用例的真正解决方案是创建一个新的空项目(gradle 或 maven)并将客户端库添加为依赖项,如下所述:https://hivemq.github.io/hivemq-mqtt-client/docs/installation.html

问题原来是由于目录 build/generated/source/apt/main/ 中的源文件夹有问题,没有选择“更新其他源文件夹中的排除过滤器以解决嵌套”选项。选择该选项解决了所有错误。