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

    XMLWordPrintableJSON

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

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

            Dates

              Created:
              Updated:
              Resolved: