【问题标题】:Cannot invoke method systemProperty() on null object -- android studio and gradle无法在空对象上调用方法 systemProperty() -- android studio 和 gradle
【发布时间】:2015-09-09 08:47:48
【问题描述】:

我在构建应用程序时遇到了一个奇怪的异常。

以下是我在主应用程序文件夹中的项目特定build.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 版,我可以解决此问题,它可以正常工作。但是对于 1.3.0,它甚至没有开始构建,并且无法在 null 对象上调用方法 systemProperty()例外。

类路径'com.android.tools.build:gradle:1.2.3'

android studio 日志文件中的详细信息显示:---

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 插件??

【问题讨论】:

    标签: android-studio gradle android-gradle-plugin android-build


    【解决方案1】:

    我有同样的问题。请参阅this 链接。

    该插件与 Gradle 插件的 v1.3.0 不兼容,并且自 Robolectric 3.0 起已弃用,我怀疑您可能正在使用该插件。只需从您的配置中删除它(以及应用程序的 build.gradle 文件中对它的任何引用),您就可以开始了。

    另外,fwiw - 您在查看 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$3.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)
    

    【讨论】:

    • :-) 听起来不错,但看起来有点奇怪,1.2.3 是旧插件,而 1.3.0 是最新的,怎么会被贬低,旧的还可以。还有,我想用最新的gradle插件,有什么建议!!!
    • 根据该问题跟踪器上的 cmets,Robolectric 插件(自 Robolectric 3.0 起)与较新版本的 Android 构建工具 Gradle 插件不兼容。只需更新到“com.android.tools.build:gradle:1.3.0”(尽管我相信现在有 1.3.1),并删除对 Robolectric 插件的所有引用 - 它不再需要。 (如果回复有帮助,别忘了点赞)。
    • 是的,听起来很完美。谢谢你。接受并支持它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多