Uploaded image for project: 'Maven Resolver'
  1. Maven Resolver
  2. MRESOLVER-85

Avoid ByteBuffer incompatibility when compiling with JDK9+

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Not A Problem
    • Affects Version/s: 1.3.2, 1.3.3
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      Restore possibility to create a release with Java9+

       

      The explanation for this is given in apache/felix#114 :

      Java 9 introduces overridden methods with covariant return types for the following methods in java.nio.ByteBuffer:

      position (int newPosition)
      limit (int newLimit)
      flip ()
      clear ()
      mark ()
      reset ()
      rewind ()
      In Java 9 they all now return ByteBuffer, whereas the methods they override return Buffer,
      resulting in exceptions like this when executing on Java 8 and lower:
      java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer
      This is because the generated byte code includes the static return type of the method, which is not found on Java 8 and lower because the overloaded methods with covariant return types don't exist (the issue appears even with source and target 8 or lower in compilation parameters).
      The solution is to cast ByteBuffer instances to Buffer before calling the method.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                slachiewicz Sylwester Lachiewicz
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m