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

牛一凡 updated FLINK-27549:
------------------------
    Attachment: image-2025-06-11-11-17-54-715.png

> Inconsistent bytecode version when enable jdk11 or higher version
> -----------------------------------------------------------------
>
>                 Key: FLINK-27549
>                 URL: https://issues.apache.org/jira/browse/FLINK-27549
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Scala
>    Affects Versions: 1.14.4, 1.15.0
>            Reporter: Ran Tao
>            Priority: Major
>         Attachments: image-2025-06-11-11-17-54-715.png, screenshot-1.png, 
> screenshot-2.png
>
>
> Current flink project build with jdk1.8 is ok.
> when enable jdk11, it has some scenarios.
> 1. Using jdk11 but source 1.8 target 1.8   it's ok.
> 2. Using jdk11 and with jdk11-target source 11 and target 11. build java ok. 
> But the generated bytecode version of scala class is already 52(jdk8).  We 
> can test with any of a scala class under jdk11 build result. e.g.
> {code:java}
> javap -verbose AggregateDataSet.class | grep major
> major version: 52
> {code}
> I have test many times and make conclusion that flink jdk11 now is not a 
> completed and pure jdk11 version because of inconsistent bytecode version 
> with java & scala. And it may cause some problems, for example:
> 1. inconsistent bytecode version between java & scala
> 2. Using reflection about class may generate some unkown errors
> 3. Runtime jdk11 environment can not optimize these lower bytecode.
> I have dipped into this problem and found out we must  upgrade scala to 
> 2.13(2.11 & 2.12 only support generate bytecode version <=1.8). the 2.13 can 
> support generate scala target 11 bytecode and higher and jdk8.
> We can see from scalac, the first is 2.12 the next is scala 2.13:
>  !screenshot-1.png! 
>  !screenshot-2.png! 
> By the way, even if scala-2.12 support generare 11 bytecode, current flink 
> build also fail. Because the config about scala-maven-plugin is error, the 
> correct format about jdk11 is target:11 not target:jvm-11, the latter format 
> only for <=1.8 with scala-2.11 and 2.12.
> {code:java}
> <plugin>
>                                       <groupId>net.alchim31.maven</groupId>
>                                       
> <artifactId>scala-maven-plugin</artifactId>
>                                       <version>3.2.2</version>
>                                       <configuration>
>                                               <args>
>                                                       <arg>-nobootcp</arg>
>                                                       
> <arg>-target:jvm-${target.java.version}</arg>
>                                               </args>
>                                               <jvmArgs>
>                                                       <arg>-Xss2m</arg>
>                                               </jvmArgs>
>                                       </configuration>
>                               </plugin>
> {code}
> I wonder current the community whether to support the completed jdk11 
> version? and  if not, at least we need to comment in pom or flink docs to let 
> users know about this problem?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to