[ 
https://issues.apache.org/jira/browse/FLINK-18455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niels Basjes updated FLINK-18455:
---------------------------------
    Description: 
I was working on some changes in Flink and on my workstation I have also JDK 14 
installed.

When Flink is built using JDK > 8 and then run using JDK 8 the problem surfaces 
that the code crashes with the exception like this:
{code:java}
java.lang.NoSuchMethodError: 
java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at 
org.apache.flink.core.memory.DataOutputSerializer.wrapAsByteBuffer(DataOutputSerializer.java:65)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.serialization.SpanningRecordSerializer.<init>(SpanningRecordSerializer.java:50)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.RecordWriter.<init>(RecordWriter.java:98)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.ChannelSelectorRecordWriter.<init>(ChannelSelectorRecordWriter.java:50)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.RecordWriterBuilder.build(RecordWriterBuilder.java:53)
 ~[classes/:?]

{code}
This is a problem in the way JDK 9+ generates the code that is incompatible 
with using the JDK 8 runtime, even if during the build it was indicated that 
JRE 8 would be the target.

I have found several projects have ran into the exact same problem:
 - https://issues.apache.org/jira/browse/MRESOLVER-67
 - [https://github.com/eclipse/jetty.project/issues/3244]
 - [https://github.com/netty/netty/issues/9880]
 - [https://github.com/apache/felix/pull/114]

As indicated in the mentioned Jetty ticket the solution is quite simple:
{quote}The solution is to cast the {{ByteBuffer}} to {{Buffer}} when calling 
those methods:
{code:java}
((Buffer)byteBuffer).position(0);{code}
 
{quote}
 

 

 

 

  was:
I was working on some changes in Flink and on my workstation I have also JDK 14 
installed.

When Flink is built using JDK > 8 and then run using JDK the problem surfaces 
that the code crashes with the exception like this:
{code:java}
java.lang.NoSuchMethodError: 
java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
        at 
org.apache.flink.core.memory.DataOutputSerializer.wrapAsByteBuffer(DataOutputSerializer.java:65)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.serialization.SpanningRecordSerializer.<init>(SpanningRecordSerializer.java:50)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.RecordWriter.<init>(RecordWriter.java:98)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.ChannelSelectorRecordWriter.<init>(ChannelSelectorRecordWriter.java:50)
 ~[classes/:?]
        at 
org.apache.flink.runtime.io.network.api.writer.RecordWriterBuilder.build(RecordWriterBuilder.java:53)
 ~[classes/:?]

{code}
This is a problem in the way JDK 9+ generates the code that is incompatible 
with using the JDK 8 runtime, even if during the build it was indicated that 
JRE 8 would be the target.

I have found several projects have ran into the exact same problem:

- [https://issues.apache.org/jira/browse/MRESOLVER-67]
- [https://github.com/eclipse/jetty.project/issues/3244]
- [https://github.com/netty/netty/issues/9880]
- [https://github.com/apache/felix/pull/114]

As indicated in the mentioned Jetty ticket the solution is quite simple:

bq. The solution is to cast the {{ByteBuffer}} to {{Buffer}} when calling those 
methods:  {code}((Buffer)byteBuffer).position(0);{code}
 

 

 

 


> Building with JDK 9+ leads to problems on JDK 8
> -----------------------------------------------
>
>                 Key: FLINK-18455
>                 URL: https://issues.apache.org/jira/browse/FLINK-18455
>             Project: Flink
>          Issue Type: Bug
>          Components: Build System
>    Affects Versions: 1.10.1
>            Reporter: Niels Basjes
>            Priority: Major
>
> I was working on some changes in Flink and on my workstation I have also JDK 
> 14 installed.
> When Flink is built using JDK > 8 and then run using JDK 8 the problem 
> surfaces that the code crashes with the exception like this:
> {code:java}
> java.lang.NoSuchMethodError: 
> java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
>       at 
> org.apache.flink.core.memory.DataOutputSerializer.wrapAsByteBuffer(DataOutputSerializer.java:65)
>  ~[classes/:?]
>       at 
> org.apache.flink.runtime.io.network.api.serialization.SpanningRecordSerializer.<init>(SpanningRecordSerializer.java:50)
>  ~[classes/:?]
>       at 
> org.apache.flink.runtime.io.network.api.writer.RecordWriter.<init>(RecordWriter.java:98)
>  ~[classes/:?]
>       at 
> org.apache.flink.runtime.io.network.api.writer.ChannelSelectorRecordWriter.<init>(ChannelSelectorRecordWriter.java:50)
>  ~[classes/:?]
>       at 
> org.apache.flink.runtime.io.network.api.writer.RecordWriterBuilder.build(RecordWriterBuilder.java:53)
>  ~[classes/:?]
> {code}
> This is a problem in the way JDK 9+ generates the code that is incompatible 
> with using the JDK 8 runtime, even if during the build it was indicated that 
> JRE 8 would be the target.
> I have found several projects have ran into the exact same problem:
>  - https://issues.apache.org/jira/browse/MRESOLVER-67
>  - [https://github.com/eclipse/jetty.project/issues/3244]
>  - [https://github.com/netty/netty/issues/9880]
>  - [https://github.com/apache/felix/pull/114]
> As indicated in the mentioned Jetty ticket the solution is quite simple:
> {quote}The solution is to cast the {{ByteBuffer}} to {{Buffer}} when calling 
> those methods:
> {code:java}
> ((Buffer)byteBuffer).position(0);{code}
>  
> {quote}
>  
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to