4
votes

I have been using RequestFactory successfully for many months in my AppEngine connected Android project. Occasionally, though, I have a problem in the file in which I subclass RequestFactory

public interface MyRequestFactory extends RequestFactory {
    ...
}

Eclipse gives me a red X on the line "public interface..." and the error I get is shown below. (Note this is not a run-time, it's just in the Eclipse window while I'm editing)

The strange thing is, I usually can do a few Project->Clean and edit the code a few times, never making any actual code change, then "Save" and the problem always goes away. This time it's stuck though.

Any ideas?

java.lang.NullPointerException at
org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.addJava6GeneratedFile(AptCompilationParticipant.java:272) at
org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeProcessingEnvImpl.addNewUnit(IdeProcessingEnvImpl.java:132) at
org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeJavaSourceOutputStream.close(IdeJavaSourceOutputStream.java:72) at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:319) at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:148) at
java.io.OutputStreamWriter.close(OutputStreamWriter.java:233) at java.io.BufferedWriter.close(BufferedWriter.java:265) at
java.io.PrintWriter.close(PrintWriter.java:312) at
com.google.web.bindery.requestfactory.apt.DeobfuscatorBuilder.visitType(DeobfuscatorBuilder.java:146) at
com.google.web.bindery.requestfactory.apt.DeobfuscatorBuilder.visitType(DeobfuscatorBuilder.java:43) at
org.eclipse.jdt.internal.compiler.apt.model.TypeElementImpl.accept(TypeElementImpl.java:60) at
javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:139) at
com.google.web.bindery.requestfactory.apt.ScannerBase.scan(ScannerBase.java:63) at
com.google.web.bindery.requestfactory.apt.State.executeJobs(State.java:248) at
com.google.web.bindery.requestfactory.apt.RfValidator.process(RfValidator.java:83) at
org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139) at
org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121) at
org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManag er.java:159) at
org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorMan ager.java:134) at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:813) at
org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:432) at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:364) at
org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:329) at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:301) at
org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:134) at
org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:265) at
org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:193) at org.eclipse.core.internal.events.BuildManager $2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager $1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

4

4 Answers

4
votes

This is a known Eclipse bug. The only solution I've found is to restart eclipse. Sometimes I must compile without annotations and then restart.

0
votes

Just restarting or disabling annotation processing didn't work in my case. I had two request factories (in different projects!) with this error.

  • myReqFacA extends RequestFactory
  • myReqFacB extends RequestFactory

I solved the problem by deleting one of the request factory interfaces. Fortunately the interface wasn't needed any more.

But after one day i have the same problem again!

0
votes

I got the same issue. The work around I used is to rename the RequestFactory subclass name (Refactor->Rename). I changed the other part of the subclass, it does not work. After successful compile, just rename it back to what used to be.

0
votes

I got the same issue with the RequestFactory from GWT and I solved it deleting the folder "gwt-unitCache" and later compiling the project again (Project -> Clean...)

Most probably for android it is necessary to delete some kind of generated folder and compile the project again.