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

Groovy @Delegate issue with Java 21

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 4.0.21
    • None
    • Compiler
    • None

    Description

      Context: Java 21 introduces a new interface SequencedCollection
      as super-interface for `List` and other interfaces.

      This causes an issue in Groovy when the following conditions are met:
      1. Using a `@Delegate List someAttribute` in a class
      2. Compile with Java 21
      3. Run with Java 20 or earlier the resulting app.

      Replicate the issue
       
      0. Clone this repository 

         https://github.com/pditommaso/groovy-java21-poc
       
      1. Compile and run
       

      ./gradlew run 

      Output:

      Runtime: Groovy 4.0.21 on OpenJDK 64-Bit Server VM 21.0.3+9-LTS
      Plain list sub-class: [1, 2, 3]
      Delegate list class : [1, 2, 3] 

      2. Setup Java 11

      sdk use java 11.0.14-zulu 

      3. Run the app with Java 11

      bash run.sh 

      Output:

      Runtime: Groovy 4.0.21 on OpenJDK 64-Bit Server VM 11.0.14+9-LTS
      Plain list sub-class: [1, 2, 3]
      Exception in thread "main" java.lang.NoClassDefFoundError: java/util/SequencedCollection
      at org.example.App.run(App.groovy:18)
      at org.example.App.main(App.groovy:22)
      Caused by: java.lang.ClassNotFoundException: java.util.SequencedCollection
      at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
      at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
      ... 2 more 

      Attachments

        Activity

          People

            Unassigned Unassigned
            pablo72 paolo di tommaso
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: