Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-8669

Groovy class does not compile if the ValueType of an annotation is not on the classpath

    Details

      Description

      If a groovy class (Test.groovy) references a class (AnnotatedClass) which has an annotation (Annotation) with a value class (ValueClass), which is not on the classpath an NoClassDefFoundError is thrown.

      This does happen during Compilation. This did not happen in Groovy 2.4.15.
      The stacktrace is:

      Caused by: java.lang.NoClassDefFoundError: annos.ValueClass
          at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:48)
          at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveNonArrayType(AsmReferenceResolver.java:81)
          at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveType(AsmReferenceResolver.java:72)
          at org.codehaus.groovy.ast.decompiled.Annotations.annotationValueToExpression(Annotations.java:58)
          at org.codehaus.groovy.ast.decompiled.Annotations.createAnnotationNode(Annotations.java:51)
         ...
      

      I think the class org.codehaus.groovy.ast.decompiled.Annotations should also ignore annotation nodes, if the values type is not resolvable. Like it is done if the annotation type itself is not resolvable, see line 43-46.

      I have attached a simple sample to reproduce the issue.
      1. Compile it with gradle build
      2. Open the jar file annos/build/libs/annos.jar
      3. Delete the classfile annos/ValueClass.class
      4. Compile it with gradle :client:build
      Now the exception is thrown.

       

       

       

        Attachments

        1. AnnoTest.zip
          3 kB
          Andreas Turban

          Activity

            People

            • Assignee:
              paulk Paul King
              Reporter:
              AndreasTu Andreas Turban
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: