Enforce -release
8 base compilation target
#2250
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Restructured the compile phases in the POM so that when executing on Java 9+, the base classes are compiled with
-release 8
. This ensures that the bootstrap class path uses the Java 8 API, and so the produced jar is binary compat with Java 8.(Whilst that option had been previously set, it was ignored as Maven's default compile stage was executed prior; this change disables the default compilations so that the platform specific activations are activated.)
When built on Java 8, the original
source
andtarget
(vsrelease
) are used.Fixes an issue where when running on Java 8 (but built on Java9+),
java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
would be thrown in ControllableInputStream buffering up, because the return expectedBuffer
, not the binary incompatibleByteBuffer
.