模块匕首中的java模块:该模块是公共的,但它包括非公共(或实际上是非公共)模块

fykwrbwg  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(309)

我使用匕首2进行di,并希望将一个模块(模块a)注入另一个模块(模块b)中。我不在任何组件或任何其他地方包含模块a。
我的代码如下所示:

@Module 
public class ModuleA {

    @Provides
    @Singleton
    @Named("classA")
    public ClassA classA() {
        return new ClassA();
    }
}
@Module(includes = ModuleA.class)
public class ModuleB {

    @Provides
    @Singleton
    public ClassB classB(@Named("classA") ClassA classA) {
        return new ClassB(classA);
    }
}

我得到以下错误:

ModuleB.java:18: error: This module is public, but it includes non-public (or effectively non-public) modules. Either reduce the visibility of this module or make ModuleA public.
public class ModuleB {
       ^

我需要moduleb是公共的,因为我将它注入到另一个包中的组件中,所以唯一的选择是将modulea公开,但它已经是公共的了。
如何解决这个问题?另外,由于我是dagger di的新手,请告诉我是否遵循了一些最佳实践,或者是否可以改进代码。

jdg4fx2g

jdg4fx2g1#

我能够解决这个问题,它使用的是dagger 2的旧版本。通过升级就解决了。
如果有人因为这个问题而感到不便,我很抱歉。

相关问题