Как исправить DaggerSingletonComponent, не решенный в HiveMQ (протокол MQTT) - PullRequest
1 голос
/ 04 июня 2019

Сначала я пытаюсь настроить создание клиента, чтобы проверить, что MQTT работает без ошибок, а затем я реализую метод connect ().Я скачал последнюю версию HiveMQ (реализация MQTT с открытым исходным кодом, сделанная на Java), и после правильного импорта проекта в виде сборки Gradle в Eclipse и использования GIT меня встретило сообщение об ошибке.Это сказало, что "DaggerSingletonComponent не может быть решен".Моя программа не может работать вообще.

Ссылка на открытый исходный код, который я скачал: https://github.com/hivemq/hivemq-mqtt-client

Я попытался вручную отредактировать файлы сборки, чтобы увидеть, был ли какой-то код для кинжала в зависимостях, но его не было,

package com.hivemq.client.internal.mqtt.ioc;

import com.hivemq.client.internal.mqtt.netty.NettyEventLoopProvider;
import com.hivemq.client.internal.mqtt.netty.NettyModule;
import dagger.Component;
import org.jetbrains.annotations.NotNull;

import javax.inject.Singleton;

/**
 * Singleton component for all clients. It exists the whole application lifetime.
 *
 * @author Silvio Giebl
 */
@Component(modules = {NettyModule.class})
@Singleton  
public interface SingletonComponent {

    @NotNull SingletonComponent INSTANCE = DaggerSingletonComponent.create();

    @NotNull ClientComponent.Builder clientComponentBuilder();

    @NotNull NettyEventLoopProvider nettyEventLoopProvider();
}


__________________________
For the module: NettyModule.class


package com.hivemq.client.internal.mqtt.netty;

import dagger.Module;

import dagger.Provides;
import io.netty.channel.epoll.Epoll;
import io.netty.channel.epoll.EpollEventLoopGroup;
import io.netty.channel.epoll.EpollSocketChannel;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import org.jetbrains.annotations.NotNull;

import javax.inject.Singleton;

/**
 * @author Silvio Giebl
 */
@Module
public abstract class NettyModule {

    @Provides
    @Singleton
    static @NotNull NettyEventLoopProvider provideNettyEventLoopProvider() {
        if (Epoll.isAvailable()) {
            return new NettyEventLoopProvider(EpollEventLoopGroup::new, EpollSocketChannel::new);
        } else {
            return new NettyEventLoopProvider(NioEventLoopGroup::new, NioSocketChannel::new);
        }
    }
}

Сообщение об ошибке: DaggerSingletonComponent не может быть разрешен

1 Ответ

3 голосов
/ 04 июня 2019

Dagger - это библиотека, которая генерирует код для внедрения зависимостей во время компиляции. Упомянутый класс является одним из сгенерированных классов.

Пожалуйста, используйте gradle для сборки проекта:

  1. Открыть терминал
  2. Перейдите в каталог проекта
  3. Выполнить ./gradlew build (Linux / Mac) или gradlew build (Windows)

Необходимо убедиться, что каталог build/generated/source/apt/main/ настроен как исходный каталог, чтобы среда IDE принимала сгенерированные классы.

Тогда вы сможете использовать методы сборки вашей IDE после первой сборки с помощью gradle.

...