2016-10-26 2 views
0

Ich versuche nur, Realm Database von 0.86 auf 2.1-Version zu aktualisieren.Kann Methode nicht aufrufen hasAnnotation() auf Nullobjekt

aber dieser Fehler auftritt Zusammen

Android Studio mit
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). 

ohne Grund gestoppt dies die App zum Laufen zu bekommen.

Irgendeine Lösung dafür?

+0

irgendeine Art von Fehler Es ist mit mindestens einem Ihrer Realm Modellklassen. War da nicht mehr zu dieser Fehlermeldung? – EpicPandaForce

+0

@EpicPandaForce, aber ich habe nichts in meinem Klassenschema geändert, es funktionierte von der vorherigen Version, meinst du, dass einige Anmerkungen veraltet sind? – Loai

+0

@EpicPandaForce gibt es nur diese Fehlermeldung in der Build – Loai

Antwort

1

So nach Ihren Stack-Trace, this line fails in the Realm-Transformer:

def allModelClasses = allClassNames

.findAll { it.endsWith('RealmProxy') }

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

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

So

es sagt „wenn Sie eine Klasse, die mit RealmProxy endet“, die Sie do as per this question where you literally have a class named RealmProxy, dann versucht er seine Superklasse zu bekommen (was sollte RealmObject oder RealmModel sein), die es nicht haben, weil es nicht Teil des Realm ist Schema, so dass es null zurückgibt und der Transformator abstürzt.

Lösung 1: Ihre RealmProxy Klasse etwas umbenennen wie, RealmFacade oder etwas

oder

Lösung 2: einige zufällige Klasse mit RealmProxy erweitern, die nicht @RealmClass Anmerkung hat.

public abstract class RealmProxyBase { 
} 

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

(in der Zwischenzeit reichte ich ein Problem für sie here)

+0

Vielen Dank meine Liebe, was mich überzeugt, dass mein Code ist in Ordnung, dass ich ** RealmProxy ** vorher in der vorherigen Version und es funktioniert problemlos, Any Wie danke und bereit für die Zukunft Frage: D – Loai

+0

Nun ja, aber Realm hat den Realm-Transformer in 0.88.0 und höher hinzugefügt, und bisher ist noch niemand auf dieses NPE gestoßen. Dennoch ist "Lösung 2" ziemlich einfach, genau das würde ich tun. – EpicPandaForce

Verwandte Themen