2016-10-26 36 views
0

我只是试图将Realm数据库从0.86升级到2.1版本。无法在空对象上调用方法hasAnnotation()

但面对这个错误随着Android的工作室

Error:Execution failed for task ':app:transformClassesWithRealmTransformerForDebug'. 
> Cannot invoke method hasAnnotation() on null object 

UPDATE(3)

clean assemble --stacktrace --info 
    Starting Build 
    Creating configuration compile            
    Creating configuration apk 
    Creating configuration provided 
    Creating configuration wearApp 
    Creating configuration annotationProcessor 
    Creating configuration androidTestCompile 
    Creating configuration androidTestApk 
    Creating configuration androidTestProvided 
    Creating configuration androidTestWearApp 
    Creating configuration androidTestAnnotationProcessor 
    Creating configuration testCompile 
    Creating configuration testApk 
    Creating configuration testProvided 
    Creating configuration testWearApp 
    Creating configuration testAnnotationProcessor 
    Creating configuration debugCompile 
    Creating configuration debugApk 
    Creating configuration debugProvided 
    Creating configuration debugWearApp 
    Creating configuration debugAnnotationProcessor 
    Creating configuration testDebugCompile 
    Creating configuration testDebugApk 
    Creating configuration testDebugProvided 
    Creating configuration testDebugWearApp 
    Creating configuration testDebugAnnotationProcessor 
    Creating configuration releaseCompile 
    Creating configuration releaseApk 
    Creating configuration releaseProvided 
    Creating configuration releaseWearApp 
    Creating configuration releaseAnnotationProcessor 
    Creating configuration testReleaseCompile 
    Creating configuration testReleaseApk 
    Creating configuration testReleaseProvided 
    Creating configuration testReleaseWearApp 
    Creating configuration testReleaseAnnotationProcessor 
    Parsing the SDK, no caching allowed 
    Parsing D:\Android\sdk\add-ons\addon-google_apis-google-23\package.xml 
    Parsing D:\Android\sdk\build-tools\23.0.2\package.xml 
    Parsing D:\Android\sdk\build-tools\23.0.3\package.xml 
    Parsing D:\Android\sdk\build-tools\24.0.0-preview\package.xml 
    Parsing D:\Android\sdk\build-tools\24.0.1\package.xml 
    Parsing D:\Android\sdk\build-tools\24.0.3\package.xml 
    Parsing D:\Android\sdk\build-tools\25.0.0\package.xml 
    Parsing D:\Android\sdk\extras\android\m2repository\package.xml 
    Parsing D:\Android\sdk\extras\android\support\package.xml 
    Parsing D:\Android\sdk\extras\google\google_play_services\package.xml 
    Parsing D:\Android\sdk\extras\google\m2repository\package.xml 
    Parsing D:\Android\sdk\extras\google\usb_driver\package.xml 


    * Exception is: 
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithRealmTransformerForDebug'. 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 
      at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
      at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66) 
      at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
      at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) 
      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 
      at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) 
      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) 
      at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) 
      at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) 
      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) 
      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) 
      at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) 
      at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
      at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) 
      at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) 
      at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
      at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) 
      at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) 
      at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153) 
      at org.gradle.internal.Factories$1.create(Factories.java:22) 
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53) 
      at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150) 
      at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32) 
      at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98) 
      at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92) 
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) 
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63) 
      at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92) 
      at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83) 
      at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99) 
      at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) 
      at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
      at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48) 
      at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30) 
      at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81) 
      at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46) 
      at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51) 
      at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28) 
      at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) 
      at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173) 
      at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:239) 
      at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:212) 
      at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 
      at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 
      at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 
      at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 
      at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:205) 
      at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 
      at org.gradle.launcher.Main.doAction(Main.java:33) 
      at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
      at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55) 
      at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36) 
      at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 
      at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33) 
      at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130) 
      at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48) 
    Caused by: java.lang.NullPointerException: Cannot invoke method hasAnnotation() on null object 
      at io.realm.transformer.RealmTransformer$_transform_closure7.doCall(RealmTransformer.groovy:115) 
      at io.realm.transformer.RealmTransformer.transform(RealmTransformer.groovy:112) 
      at com.android.build.api.transform.Transform.transform(Transform.java:290) 
      at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:178) 
      at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:174) 
      at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156) 
      at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173) 
      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 
      at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245) 
      at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221) 
      at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232) 
      at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210) 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
      ... 60 more 


    BUILD FAILED 

    Total time: 20.365 secs 
    Stopped 0 compiler daemon(s). 

没有任何理由停止该应用程序来获得运行。

任何解决方案?

+0

有某种错误的与你的境界模型类的至少一个。这个错误信息没有更多吗? – EpicPandaForce

+0

@EpicPandaForce但我没有改变我的类架构中的任何东西,它是从以前的版本开始工作的,你的意思是一些注释已被弃用? – Loai

+0

@EpicPandaForce只有此错误消息在构建 – Loai

回答

1

所以要根据您的堆栈跟踪,this line fails in the Realm-Transformer

def allModelClasses = allClassNames

​​

.collect { classPool.getCtClass(it).superclass }

.findAll { it.hasAnnotation(RealmClass.class) || it.superclass.hasAnnotation(RealmClass.class) }

所以它说:“如果你有与RealmProxy结尾的类”你do as per this question where you literally have a class named RealmProxy,然后它会尝试获取它的父(这应该是RealmObjectRealmModel),它并没有因为它不是王国的一部分架构,所以它返回null和变压器崩溃。

解决方案1:RealmProxy类重命名为类似,RealmFacade什么

解决方案2:RealmProxy不具有@RealmClass注释延长一些随机类。

public abstract class RealmProxyBase { 
} 

public class RealmProxy extends RealmProxyBase implements Closeable { 
    // ... 

(在此期间,我提交了问题,它here

+0

非常感谢你亲爱的,是什么让我确信我的代码是好的,我有** RealmProxy **之前在以前的版本,它工作正常没有任何问题,任何如何感谢你,并准备好未来问题:D – Loai

+0

是的,但Realm在0.88.0及以上版本中添加了Realm-Transformer,之前没有其他人遇到过这个NPE。不过,'解决方案2'相当简单,那就是我所要做的。 – EpicPandaForce

相关问题