Guice 注入后出现 Nullptr 异常

Nullptr exception after Guice injection

我对 Guice 注入有点陌生。我的项目中出现了 nullptr 异常。

我怀疑是因为我没有正确设置Injecting dependencies

经查,是S3Driver.java文件中的invokeSomeMethod引起的,具体是lambdaHelper.invokeSomeMethod().

你能给出一些关于问题所在的提示吗?

谢谢

S3Driver.java

// Constructor
public S3Driver() {
             Injector injector = createInjector(new LambdaHelperModule(), new S3Module());
             this.lambdaHelper = injector.getInstance(LambdaHelper.class);
}

...
lambdaHelper.invokeSomeMethod(); // Nullptr Exception

这是我的项目设置:

LambdaHelper.java

// Constructor
public LambdaHelper(S3Class s3Class) {
  this.s3Class = s3Class;
}

S3Class.java

...
// Constructor
public S3Class(S3Presigner p, S3Client s) {this.p = p; this.s = s;};

LambdaHelperModule.java

public LambdaHelper provideLambdaHelper() {
             S3Class s3Class = S3Class.builder()
                                         .s3Presigner(S3Presigner.builder().build())
                                         .s3Client(S3Client.builder().build())
                                         .build();
             return new LambdaHelper(s3Class);
}

S3Module.java

public S3Class provideS3Class() {
             return new S3Class(S3Presigner.builder().build(),
                                 S3Client.builder().build());
}

@Provides 添加到您的提供者方法中

你的方法 provideLambdaHelper()provideS3Class() 绝对应该用 @Provides 注释。这将使 Guice 知道他们应该是您的提供者,因此当您想要注入此类实例时,Guice 会调用他们。

所以你的代码应该是:

@Provides
public LambdaHelper provideLambdaHelper() {
  ...
}

@Provides
public S3Class provideS3Class() {
  ...
}