[
https://issues.apache.org/jira/browse/HBASE-25465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17259325#comment-17259325
]
Nick Dimiduk commented on HBASE-25465:
--------------------------------------
"If it actually works" :)
> Use javac --release option for supporting cross version compilation in
> create-release
> -------------------------------------------------------------------------------------
>
> Key: HBASE-25465
> URL: https://issues.apache.org/jira/browse/HBASE-25465
> Project: HBase
> Issue Type: Improvement
> Components: create-release
> Reporter: Andrew Kyle Purtell
> Priority: Minor
>
> 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.3.4#803005)