[ https://issues.apache.org/jira/browse/MRESOLVER-85?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17945686#comment-17945686 ]
Elliotte Rusty Harold commented on MRESOLVER-85: ------------------------------------------------ "the issue appears even with source and target 8 or lower in compilation parameters" - yes, it would be expected to appear in that case. If you use -source 9 -target 8 then javac should produce working code. > Avoid ByteBuffer incompatibility when compiling with JDK9+ > ---------------------------------------------------------- > > Key: MRESOLVER-85 > URL: https://issues.apache.org/jira/browse/MRESOLVER-85 > Project: Maven Resolver > Issue Type: Improvement > Affects Versions: 1.3.2, 1.3.3 > Reporter: Sylwester Lachiewicz > Priority: Minor > Time Spent: 20m > Remaining Estimate: 0h > > Restore possibility to create a release with Java9+ > > The explanation for this is given in > [apache/felix#114|https://github.com/apache/felix/pull/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. -- This message was sent by Atlassian Jira (v8.20.10#820010)