在 Groovy 中使用 Dropbox 和 Google Drive 构建应用程序,测试运行良好。
代码:
def "It instantiates and configures the googleAuthorizationCodeFlowBuilder component"() {
given:
def ctx = grailsApplication.mainContext
GoogleAuthorizationCodeFlow.Builder builder = ctx.googleAuthorizationCodeFlowBuilder
expect:
}
然而,在 Codeship 和 Amazon 上运行时,测试失败:
消息:创建名为“googleAuthorizationCodeFlowBuilder”的 bean 时出错:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder]:构造函数抛出异常;嵌套异常是 java.lang.NullPointerException
线 | 方法->> 285 | org.springframework.beans.factory.support.ConstructorResolver 中的 autowireConstructor
| 1075 | org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 中的 autowireConstructor
/* 东西 */
org.apache.catalina.core.ContainerBase$StartChild | 第1549章 来电'' | 262 | 跑 。. . . . . . . . . . . . . 在 java.util.concurrent.FutureTask | 第1145章 java.util.concurrent.ThreadPoolExecutor 中的runWorker | 615 | 跑 。. . . . . . . . . . . . . 在 java.util.concurrent.ThreadPoolExecutor$Worker ^ 745 | 在 java.lang.Thread 中运行
由 BeanInstantiationException 引起:无法实例化 bean 类 [com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder]:构造函数抛出异常;嵌套异常是 java.lang.NullPointerException ->> 163 | org.springframework.beans.BeanUtils 中的实例化类
| 121 | 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy 中实例化 | 277 | 自动接线构造器。. . . . . 在 org.springframework.beans.factory.support.ConstructorResolver | 1075 | org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 中的 autowireConstructor | 第979章 创建BeanInstance 。. . . . . 在''| 第487章 doCreateBean in '' | 123 | 做创建豆。. . . . . . . . 在 java.util.concurrent.ThreadPoolExecutor
/* 更多堆栈跟踪 */
| 615 | 跑 。. . . . . . . . . . . . . 在 java.util.concurrent.ThreadPoolExecutor$Worker ^ 745 | 在 java.lang.Thread 中运行
googleAuthorizationflowBuilder bean 只创建一个 GoogleAuthorizationCodeFlow.Builder(我使用 Google java API)。
编辑1:我通过修改doWithSpring在我的机器上重现了错误:
def doWithSpring = {
def config = application.config
String googleSecret = getConfigValue(config, 'storage.google.secret')
String googleAppId = null//getConfigValue(config, 'storage.google.appId')
String appName = getConfigValue(config, 'storage.appName')
if (!ConfigUtils.optional(config,'storage.google.disabled')) {
googleNetHttpTransport(NetHttpTransport)
googleJsonFactory(JacksonFactory)
googleCredentialsBuilder(GoogleCredential.Builder) {
transport = googleNetHttpTransport
jsonFactory = googleJsonFactory
}
googleAuthorizationCodeFlowBuilder(GoogleAuthorizationCodeFlow.Builder, ref('googleNetHttpTransport'), ref('googleJsonFactory'),
googleAppId, googleSecret, [DRIVE])
}
}
编辑 2:似乎当 AppId 为 null 时,该错误特别发生......问题是为什么它在云上是 null 而不是在我的机器上......