Adwords库中的枚举成员为null

时间:2019-03-08 12:10:17

标签: java spring-boot google-adwords

我正在使用Google Adwords库。要创建凭据,提供了构建器模式:

new OfflineCredentials.Builder()
                      .forApi(OfflineCredentials.Api.ADWORDS)
                      .fromFile("D:\...\ads.properties")
                      .build()

此调用在我的应用程序中引发了空指针异常,特别是.forApi()方法的参数为null。该对象是枚举成员defined thus

 public static enum Api implements OAuthConfig {
  ADWORDS("api.adwords.", "https://www.googleapis.com/auth/adwords"),
  AD_MANAGER("api.admanager.", "https://www.googleapis.com/auth/dfp");

  private final String propKeyPrefix;
  private final String scope;

  private Api(String propKeyPrefix, String scope) {
    this.propKeyPrefix =
        Preconditions.checkNotNull(propKeyPrefix, "Null property key prefix for: %s", this);
    this.scope = Preconditions.checkNotNull(scope, "Null scope for: %s", this);
  }

现在,枚举成员如何才能为空?那我该怎么办?

这是类加载的问题吗?如果有帮助,那就是Spring Boot应用程序。

1 个答案:

答案 0 :(得分:0)

找到了。由于版本冲突,Preconditions.checkNotNull抛出了NoSuchMethodError。这阻止了枚举成员被正确初始化,从而保持为空并依次导致NPE。

TIL:当枚举成员为null时,其构造函数中正确存在一个错误。