[
https://issues.apache.org/jira/browse/HBASE-25465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17536607#comment-17536607
]
Nick Dimiduk commented on HBASE-25465:
--------------------------------------
You might also grab HBASE-26855 while you're in there.
> Use javac --release option for supporting cross version compilation
> -------------------------------------------------------------------
>
> Key: HBASE-25465
> URL: https://issues.apache.org/jira/browse/HBASE-25465
> Project: HBase
> Issue Type: Improvement
> Components: create-release
> Affects Versions: 3.0.0-alpha-3
> Reporter: Andrew Kyle Purtell
> Assignee: Duo Zhang
> Priority: Minor
> Fix For: 2.5.0, 3.0.0-alpha-3
>
>
> See https://www.morling.dev/blog/bytebuffer-and-the-dreaded-nosuchmethoderror/
> {quote}
> the Java compiler’s --release parameter, which was introduced via JEP 247
> ("Compile for Older Platform Versions"), added to the platform also in JDK 9.
> In contrast to the more widely known pair of --source and --target, the
> --release switch will ensure that only byte code is produced which actually
> will be usable with the specified Java version. For this purpose, the JDK
> contains the signature data for all supported Java versions (stored in the
> $JAVA_HOME/lib/ct.sym file).
> {quote}
> Using one JDK (i.e. Java 11) to build Java 8-and-up and Java 11-and-up
> compatible release artifacts would reduce some sources of accidental
> complexity, assuming the --release parameter actually works as advertised. To
> produce Java 8-and-up compatible artifacts, supply --release=8. To produce
> Java 11-and-up compatible release artifacts, supply --release=11. Maven
> activations based on JDK version and command line defined profiles can
> control what --release parameter, if any, should be passed to the compiler.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)