Как исправить неопределенный конструктор MqttChannelInitializer в HiveMQ Client? - PullRequest
1 голос
/ 13 июня 2019

Я использовал HiveMQ Client версии 1.0.1, но решил обновить до недавно выпущенной версии 1.1. Я полностью начал с нуля и импортировал проект как проект Gradle и попытался построить. Сборка работает только после игнорирования нескольких неудачных тестов. Я получаю 3 ошибки в 3 разных классах. Я понимаю, что это, скорее всего, связано с инструментом внедрения зависимостей Dagger, и я уже успешно собрал проект и добавил каталог build/generated/source/apt/main/ в путь сборки, как отмечалось в моей предыдущей публикации стека, где у меня не было проблем с DaggerSingletonComponent: Как исправить компонент DaggerSingletonContent, не решенный в HiveMQ (протокол MQTT) . Кажется, это новая проблема, и я не уверен, что не так. Я попытался восстановить проект, но ошибки все еще сохраняются. Я оставил скриншот ниже, а также конкретные ошибки.

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) не определен

Метод provideBootstrap (NettyEventLoopProvider, MqttChannelInitializer) в типе ConnectionModule не применим для аргументов (MqttClientConfig, NettyEventLoopProvider, MqttChannelInitializer)

Скриншоты:

enter image description here enter image description here enter image description here

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Проблема, как оказалось, была вызвана проблемой с исходной папкой в ​​каталоге build/generated/source/apt/main/, когда не выбрана опция «Обновлять фильтры исключений в других исходных папках для решения вопроса о вложенности».Выбор этой опции решил все ошибки.

enter image description here

1 голос
/ 14 июня 2019

Выполнение ./gradlew clean build в командной строке исправит вашу ошибку.

Но я также думаю, что реальным решением для вашего варианта использования является создание нового пустого проекта (gradle или maven) и добавление клиентабиблиотека как зависимость, как описано здесь: https://hivemq.github.io/hivemq-mqtt-client/docs/installation.html

...