我正在使用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应用程序。
答案 0 :(得分:0)
找到了。由于版本冲突,Preconditions.checkNotNull
抛出了NoSuchMethodError
。这阻止了枚举成员被正确初始化,从而保持为空并依次导致NPE。
TIL:当枚举成员为null时,其构造函数中正确存在一个错误。