java.lang.NullPointerException(无错误消息)

时间:2016-08-27 17:06:12

标签: android gradle build.gradle

我知道我的这个问题已被多次询问,我确实按照大部分答案,但没有一个帮助我。所以这是我的问题,每当我同步我的项目时它总是失败。以下是gradle控制台的外观:

  

执行任务:[:app:generateDebugSources,   :app:generateDebugAndroidTestSources,:app:mockableAndroidJar,   :应用程序:prepareDebugUnitTestDependencies]

     

按需配置是一项孵化功能。增量java   编译是一个孵化功能。 :app:preBuild UP-TO-DATE   :app:preDebugBuild UP-TO-DATE:app:checkDebugManifest   :app:preReleaseBuild UP-TO-DATE   :应用:prepareComAndroidSupportAnimatedVectorDrawable2420Library   最新消息:app:prepareComAndroidSupportAppcompatV72420Library   最新消息:app:prepareComAndroidSupportDesign2420Library UP-TO-DATE   :app:prepareComAndroidSupportMediarouterV72300Library UP-TO-DATE   :app:prepareComAndroidSupportRecyclerviewV72420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportCompat2420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportCoreUi2420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportCoreUtils2420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportFragment2420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportMediaCompat2420Library UP-TO-DATE   :app:prepareComAndroidSupportSupportV42420Library UP-TO-DATE   :应用:prepareComAndroidSupportSupportVectorDrawable2420Library   UP-TO-DATE:app:prepareComGoogleAndroidGmsPlayServices940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesAds940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAdsLite940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAnalytics940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAppindexing940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAppinvite940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesAuth940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesAuthBase940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesBase940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesBasement940Library   UP-TO-DATE:app:prepareComGoogleAndroidGmsPlayServicesCast940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesCastFramework940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesClearcut940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesContextmanager940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesDrive940Library   最新   :应用:prepareComGoogleAndroidGmsPlayServicesFitness940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesGames940Library   UP-TO-DATE:app:prepareComGoogleAndroidGmsPlayServicesGass940Library   最新消息:app:prepareComGoogleAndroidGmsPlayServicesGcm940Library   最新   :app:prepareComGoogleAndroidGmsPlayServicesIdentity940Library FAILURE:   构建因异常而失败。

     
      
  • 出了什么问题:java.lang.NullPointerException(无错误消息)

  •   
  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  •   
     

建立失败

     

总时间:7.518秒

这些是我的依赖

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.android.support:design:24.2.0'
    compile 'com.google.android.gms:play-services:9.4.0'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-location:9.4.0'
    compile 'com.google.android.gms:play-services-appindexing:9.4.0'
    compile 'com.google.firebase:firebase-messaging:9.2.0'
    compile 'com.google.firebase:firebase-database:9.0.2'
    compile 'com.firebase:firebase-client-android:2.4.0'
    compile 'com.google.firebase:firebase-core:9.4.0'
}

apply plugin: 'com.google.gms.google-services'

如何解决问题?

14 个答案:

答案 0 :(得分:177)

我已从项目中删除了 .gradle 文件夹,并且能够再次重建它。

N.B:进行备份,以防万一。

答案 1 :(得分:28)

突然系统重启时创建此问题,然后gradle文件损坏。并且已损坏的文件被缓存,因此我们需要从您的项目中删除此文件

your_project_path/.gradle/2.14.1/taskArtifacts

它将再次重新生成。

然后重启Android工作室并重新编译项目。

来源:https://code.google.com/p/android/issues/detail?id=220741#c13

这对我有用。

答案 2 :(得分:3)

如果您仍然遇到此问题,即使删除项目路径下的.gradle文件夹,如建议above在任务管理器上杀死所有正在运行的Java进程并尝试更新您的Android Studio

我处于相同的情况,但现在它正常工作。

希望它有所帮助!

答案 3 :(得分:1)

问题可能是gradle.properties文件。如果在终端中键入./gradlew tasks,则会看到提到的错误,但./gradlew tasks --info显示有关该错误的更多详细信息。对我来说,在我所有的项目中,都是相同的错误消息:

Java home is different.
Wanted: DefaultDaemonContext[uid=null,javaHome=/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home,daemonRegistryDir=/Users/christian/.gradle/daemon,pid=66346,idleTimeout=null,daemonOpts=-XX:MaxPermSize=512m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1536m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]
Actual: DefaultDaemonContext[uid=4bf81505-0eab-4f50-859a-8c9c616b97e5,javaHome=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home,daemonRegistryDir=/Users/christian/.gradle/daemon,pid=65018,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=512m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1536m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]

解决方案:(无需编辑.bash_profile或降级gradle或删除 gradle.folder )。

  • 在gradle.properties中添加org.gradle.java.home=path。其中path是Android Studio Java路径(在--info日志中说明的实际Java主页)。对我来说,/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home对您来说,路径可能会不同。

这是更改后我的gradle.properties文件的样子:

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
org.gradle.daemon=true 

注释:路径中“ Android Studio ”之间的空格是有意的,如果使用下划线,则该空格无效。允许但不需要转义字符\...Android\ Studio.app/Contents/jre....

我还启用了守护程序生成运行器,但gradlew不需要运行它。如果您的空指针错误不同,请使用--info将您指向正确的方向。

我正在跑步:

Android Studio 3.1.4 (on a Mac 10.13)
java version "10"
classpath 'com.android.tools.build:gradle:3.1.4' (dependency)

希望它对某人有帮助!

答案 4 :(得分:0)

compile 'com.google.android.gms:play-services-location:9.4.0'
compile 'com.google.android.gms:play-services-appindexing:9.4.0'
compile 'com.google.firebase:firebase-messaging:9.2.0'
compile 'com.google.firebase:firebase-database:9.0.2'

不确定这是罪魁祸首,但你在这里使用的版本相当糟糕。尝试使用最新版本或至少相同的所有组件。

此工具可以帮助您在将来保持同步:https://github.com/ben-manes/gradle-versions-plugin

答案 5 :(得分:0)

将firebase导入我的项目时遇到了类似的问题。首先确保您正确地遵循了教程步骤并将提供的.json文件导入到正确的目录中。

此外,由于firebase v9.0已经在google play服务中实现,因此要使firebase正常工作,请确保Google Play服务在您正在测试的设备上是最新的,< / p>

我也发现这个答案在解决我的问题时很有帮助 https://stackoverflow.com/a/37310513/6728099

答案 6 :(得分:0)

从依赖项中删除下面的行,因为已经编译完整的播放服务依赖项

override func layoutSubviews() {
    super.layoutSubviews()

    textLabel?.frame = CGRectMake(50, textLabel!.frame.origin.y - 8, textLabel!.frame.width, textLabel!.frame.height)
    textLabel?.font = UIFont(name: "GillSans-SemiBold", size: 16)

    detailTextLabel?.frame = CGRectMake(50, detailTextLabel!.frame.origin.y - 10, detailTextLabel!.frame.width, detailTextLabel!.frame.height + 10)
    detailTextLabel?.lineBreakMode = .ByWordWrapping
    detailTextLabel?.numberOfLines = 2
    detailTextLabel?.font = UIFont(name: "GillSans-SemiBold", size: 14)
    detailTextLabel?.allowsDefaultTighteningForTruncation = true
    detailTextLabel?.textColor = UIColor.darkGrayColor()
}

答案 7 :(得分:0)

检查(x,y)。 我的问题是依赖项中的index_finder

答案 8 :(得分:0)

由于jdk版本,我得到了NPE,从11降级到8解决了这个问题

要删除jdk 11

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDebugKotlin'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)

Caused by: java.lang.NullPointerException
    at org.gradle.workers.internal.DefaultWorkerExecutor$2.transform(DefaultWorkerExecutor.java:164)
    at org.gradle.workers.internal.DefaultWorkerExecutor$2.transform(DefaultWorkerExecutor.java:161)
    at org.gradle.util.CollectionUtils.collect(CollectionUtils.java:204)
    at org.gradle.util.CollectionUtils.collect(CollectionUtils.java:187)
    at org.gradle.util.CollectionUtils.collect(CollectionUtils.java:191)
    at org.gradle.workers.internal.DefaultWorkerExecutor.getDaemonForkOptions(DefaultWorkerExecutor.java:161)
    at org.gradle.workers.internal.DefaultWorkerExecutor.submit(DefaultWorkerExecutor.java:96)
    at org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask.compile(KaptWithoutKotlincTask.kt:75)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

答案 9 :(得分:0)

当Java版本为1.9时,我有同样的问题

jenv use java 1.8 

所有问题都解决了。

答案 10 :(得分:0)

对我来说,问题是开源项目使用的是旧版本的 gradle 3.4.0。

编辑 build.gradle 并将 com.android.tools.build:gradle:x.x.x 更改为依赖项中的最新版本。就我而言,com.android.tools.build:gradle:4.1.2

再次在 Android Studio 中打开项目,您现在将看到另一条关于最低 Gradle 版本的错误消息,如下面的屏幕截图所示

A screenshot of the gradle version error

点击蓝色文字 Fix Gradle wrapper and re-import project。你应该没事了

答案 11 :(得分:0)

还要检查 build.gradle 文件中的依赖项

在我自己的情况下,我删除了 Glide 库(实现“com.github.bumptech.glide:glide:4.9.0”)而没有删除相应的注解库 (annotationProcessor "com.github.bumptech.glide:compiler:4.11.0")

删除这两个库后,构建错误得到修复。

答案 12 :(得分:0)

检查 local.properties 文件。查看 *.dir 值是否指向正确的文件夹。

就我而言,ndk.dir 指向其他文件夹。当我解决问题时,问题就消失了。

ndk.dir=E\:\\Android\\local\\Android\\Sdk\\ndk-bundle
sdk.dir=E\:\\Android\\local\\Android\\Sdk

答案 13 :(得分:0)

公认的解决方案有点风险,可能不是大多数人的解决方案。

正确的答案是不幸的是没有一个答案。

您必须查看案例的日志(Help > Show LogsShow Logs in Explorer,然后在文本编辑器中打开 idea.log 文件)

在那里您将看到整个堆栈跟踪以及发生的实际错误。

从那里开始,清除当前接受的解决方案提到的想法缓存或做其他事情是有意义的(在我的情况下,它是不匹配的 gradle/cmake/ndk 版本,而不删除我的 .gradle 缓存文件夹会有所帮助)