无法在空对象上调用方法 systemProperty() -- android studio 和 gradle
Cannot invoke method systemProperty() on null object -- android studio and gradle
我在构建我的应用程序时遇到了一个奇怪的异常。
以下是我的项目 specificbuild.gradle 主应用程序文件夹中的文件(不在应用程序文件夹中)。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1'
}
}
apply plugin: 'java'
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
}
allprojects {
repositories {
jcenter()
}
}
但是,如果我将 gradle 依赖项更改为版本 1.2.3,我可以解决此问题,它可以 fine.but 与 1.3.0 一起使用它甚至没有开始构建并给出 Cannot在空对象异常时调用方法 systemProperty()。
classpath 'com.android.tools.build:gradle:1.2.3'
android 工作室日志文件中的详细信息显示:---
2015-09-09 15:28:18,211 [120924807] WARN - nal.AbstractExternalSystemTask - Cannot invoke method systemProperty() on null object
com.intellij.openapi.externalSystem.model.ExternalSystemException: Cannot invoke method systemProperty() on null object
at org.jetbrains.plugins.gradle.service.project.AbstractProjectImportErrorHandler.createUserFriendlyError(AbstractProjectImportErrorHandler.java:106)
at org.jetbrains.plugins.gradle.service.project.BaseProjectImportErrorHandler.getUserFriendlyError(BaseProjectImportErrorHandler.java:158)
at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.getUserFriendlyError(BaseGradleProjectResolverExtension.java:438)
at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.getUserFriendlyError(AndroidGradleProjectResolver.java:348)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver
谁能解释一下原因,为什么它没有使用 1.3.0 gradle 插件??
我遇到了同样的问题。参见 this link。
该插件与 Gradle 插件的 v1.3.0 不兼容,并且已从 Robolectric 3.0 开始弃用,我怀疑您可能正在使用它。只需从您的配置中删除它(连同您应用的 build.gradle 文件中对它的任何引用),您就可以开始了。
此外,首先 - 您在查看 Studio 日志文件时使用了正确的线程。您只需要查看您引用的堆栈帧之前的堆栈帧,以获得有关根本原因的更具体线索:
Caused by: java.lang.NullPointerException: Cannot invoke method systemProperty() on null object
at org.robolectric.gradle.RobolectricPlugin$_apply_closure1_closure2.doCall(RobolectricPlugin.groovy:28)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:67)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:110)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:115)
at org.gradle.api.DomainObjectCollection$all.call(Unknown Source)
at org.robolectric.gradle.RobolectricPlugin$_apply_closure1.doCall(RobolectricPlugin.groovy:19)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy10.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79)
我在构建我的应用程序时遇到了一个奇怪的异常。
以下是我的项目 specificbuild.gradle 主应用程序文件夹中的文件(不在应用程序文件夹中)。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1'
}
}
apply plugin: 'java'
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
}
allprojects {
repositories {
jcenter()
}
}
但是,如果我将 gradle 依赖项更改为版本 1.2.3,我可以解决此问题,它可以 fine.but 与 1.3.0 一起使用它甚至没有开始构建并给出 Cannot在空对象异常时调用方法 systemProperty()。
classpath 'com.android.tools.build:gradle:1.2.3'
android 工作室日志文件中的详细信息显示:---
2015-09-09 15:28:18,211 [120924807] WARN - nal.AbstractExternalSystemTask - Cannot invoke method systemProperty() on null object
com.intellij.openapi.externalSystem.model.ExternalSystemException: Cannot invoke method systemProperty() on null object
at org.jetbrains.plugins.gradle.service.project.AbstractProjectImportErrorHandler.createUserFriendlyError(AbstractProjectImportErrorHandler.java:106)
at org.jetbrains.plugins.gradle.service.project.BaseProjectImportErrorHandler.getUserFriendlyError(BaseProjectImportErrorHandler.java:158)
at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.getUserFriendlyError(BaseGradleProjectResolverExtension.java:438)
at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.getUserFriendlyError(AndroidGradleProjectResolver.java:348)
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver
谁能解释一下原因,为什么它没有使用 1.3.0 gradle 插件??
我遇到了同样的问题。参见 this link。
该插件与 Gradle 插件的 v1.3.0 不兼容,并且已从 Robolectric 3.0 开始弃用,我怀疑您可能正在使用它。只需从您的配置中删除它(连同您应用的 build.gradle 文件中对它的任何引用),您就可以开始了。
此外,首先 - 您在查看 Studio 日志文件时使用了正确的线程。您只需要查看您引用的堆栈帧之前的堆栈帧,以获得有关根本原因的更具体线索:
Caused by: java.lang.NullPointerException: Cannot invoke method systemProperty() on null object
at org.robolectric.gradle.RobolectricPlugin$_apply_closure1_closure2.doCall(RobolectricPlugin.groovy:28)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:67)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:110)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:115)
at org.gradle.api.DomainObjectCollection$all.call(Unknown Source)
at org.robolectric.gradle.RobolectricPlugin$_apply_closure1.doCall(RobolectricPlugin.groovy:19)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy10.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79)