Marshall Schor created UIMA-5904:
------------------------------------

             Summary: work around Java 11 build issue with ByteBuffer return 
type change
                 Key: UIMA-5904
                 URL: https://issues.apache.org/jira/browse/UIMA-5904
             Project: UIMA
          Issue Type: Bug
          Components: Core Java Framework
         Environment: only happens when building with Java > 8 and then running 
with Java 8
            Reporter: Marshall Schor
            Assignee: Marshall Schor
             Fix For: 3.0.1SDK


See 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
(v7.6.3#76005)

Reply via email to