Eclipse Oxygen and Photon, JDK10 (for compilation), Groovy-Eclipse 3.0.0 (snapshot). This occurs with the latest snapshot 3.0.0.xx-201806281902-e47 (for Oxygen).
This error prevents compilation of Groovy code entirely.
On Eclipse Oxygen, the error is:
java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.lookup.Scope.findDirectMemberType(Scope.java:1250)
at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3311)
at org.eclipse.jdt.internal.compiler.lookup.Scope.getPackage(Scope.java:2916)
at org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference.getTypeBinding(QualifiedTypeReference.java:104)
at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:503)
at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:607)
at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:603)
at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:599)
at org.eclipse.jdt.internal.compiler.ast.Annotation.resolveType(Annotation.java:813)
at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolveAnnotations(ASTNode.java:865)
at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolveAnnotations(ASTNode.java:724)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.getAnnotationTagBits(SourceTypeBinding.java:1025)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.retrieveAnnotationHolder(SourceTypeBinding.java:2355)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.retrieveAnnotations(ReferenceBinding.java:1724)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.getAnnotations(ReferenceBinding.java:997)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyClassScope$TraitHelper.isTrait(GroovyClassScope.java:525)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyClassScope$TraitHelper.access$1(GroovyClassScope.java:518)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyClassScope.augmentMethodBindings(GroovyClassScope.java:168)
at org.eclipse.jdt.internal.compiler.lookup.ClassScope.buildMethods(ClassScope.java:387)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.initializeForStaticImports(SourceTypeBinding.java:1390)
at org.eclipse.jdt.internal.compiler.lookup.Scope.findField(Scope.java:1424)
at org.eclipse.jdt.internal.compiler.lookup.Scope.findField(Scope.java:1328)
at org.eclipse.jdt.internal.compiler.lookup.Scope.getBinding(Scope.java:2064)
at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getBinding(BlockScope.java:485)
at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.resolveType(QualifiedNameReference.java:999)
at org.eclipse.jdt.internal.compiler.ast.MemberValuePair.resolveTypeExpecting(MemberValuePair.java:141)
at org.eclipse.jdt.internal.compiler.ast.Annotation.resolveType(Annotation.java:862)
at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolveAnnotations(ASTNode.java:865)
at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolveAnnotations(ASTNode.java:724)
at org.eclipse.jdt.internal.compiler.lookup.MethodBinding.getAnnotationTagBits(MethodBinding.java:651)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesWithSuspendedTempErrorHandlingPolicy(SourceTypeBinding.java:1869)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesFor(SourceTypeBinding.java:1849)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.methods(SourceTypeBinding.java:1539)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyClassScope.buildFieldsAndMethods(GroovyClassScope.java:430)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.buildFieldsAndMethods(CompilationUnitScope.java:98)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:514)
at org.eclipse.jdt.internal.compiler.Compiler.internalBeginToCompile(Compiler.java:873)
at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:397)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:447)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:429)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:396)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:191)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:329)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:62)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:256)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:180)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Digging into the code - org.eclipse.jdt.internal.compiler.lookup.Scope.java:
public ReferenceBinding findDirectMemberType(char[] typeName, ReferenceBinding enclosingType) {
if ((enclosingType.tagBits & TagBits.HasNoMemberTypes) != 0)
return null; // know it has no member types (nor inherited member types)
it looks like enclosingType must be null. I would guess the fix is:
public ReferenceBinding findDirectMemberType(char[] typeName, ReferenceBinding enclosingType) {
if (enclosingType == null || (enclosingType.tagBits & TagBits.HasNoMemberTypes) != 0)
return null; // know it has no member types (nor inherited member types)
but I have no idea why enclosingType would be null, so there may be a more complex fix needed.
Unfortunately I'm having trouble building Groovy-Eclipse in my environment, so I can't test this fix at the moment.
Eclipse Oxygen and Photon, JDK10 (for compilation), Groovy-Eclipse 3.0.0 (snapshot). This occurs with the latest snapshot 3.0.0.xx-201806281902-e47 (for Oxygen).
This error prevents compilation of Groovy code entirely.
On Eclipse Oxygen, the error is:
Digging into the code -
org.eclipse.jdt.internal.compiler.lookup.Scope.java:it looks like
enclosingTypemust be null. I would guess the fix is:but I have no idea why
enclosingTypewould be null, so there may be a more complex fix needed.Unfortunately I'm having trouble building Groovy-Eclipse in my environment, so I can't test this fix at the moment.