From 652442a8d25b002fe14f385e8962406c2971c209 Mon Sep 17 00:00:00 2001 From: rdk Date: Wed, 11 Feb 2026 15:27:39 +0100 Subject: [PATCH] add JVM compatibility flags to run scripts, document all flags --- build.gradle | 10 +++++++--- distro/prank | 21 ++++++++++++++------- prank.sh | 23 ++++++++++++++--------- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index a0d5ffcb..dcf8724d 100644 --- a/build.gradle +++ b/build.gradle @@ -113,10 +113,14 @@ test { maxHeapSize = "2g" // JVM flags for test compatibility with Java 17+ - jvmArgs '--add-opens=java.base/java.nio=ALL-UNNAMED', // Apache Arrow memory access - '--enable-native-access=ALL-UNNAMED' // zstd-jni native loading + // --add-opens: required by Apache Arrow and Netty for direct memory access via sun.misc.Unsafe + // --enable-native-access: required by zstd-jni for native library loading + jvmArgs '--add-opens=java.base/java.nio=ALL-UNNAMED', + '--enable-native-access=ALL-UNNAMED' + // --sun-misc-unsafe-memory-access: suppresses warnings from parquet-hadoop CleanUtil + // which uses sun.misc.Unsafe (upstream unfixed). Only available in Java 23+. if (JavaVersion.current() >= JavaVersion.VERSION_23) { - jvmArgs '--sun-misc-unsafe-memory-access=allow' // parquet-hadoop CleanUtil (upstream unfixed) + jvmArgs '--sun-misc-unsafe-memory-access=allow' } inputs.dir "$distroDir/test_data" diff --git a/distro/prank b/distro/prank index 93fea63b..0e40efcd 100755 --- a/distro/prank +++ b/distro/prank @@ -5,13 +5,6 @@ # export JAVA_OPTS="$JAVA_OPTS -Xmx2048m" -# -# Required for Apache Arrow memory access on Java 17+ -# -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.nio=ALL-UNNAMED" -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED" - # # Set this to change the Java installation that will be used to run the program: # @@ -38,5 +31,19 @@ else JAVACMD="java" fi +# JVM flags for compatibility with Java 17+ +# --add-opens: required by Apache Arrow and Netty for direct memory access via sun.misc.Unsafe +# --enable-native-access: required by zstd-jni for native library loading +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.nio=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --enable-native-access=ALL-UNNAMED" + +# --sun-misc-unsafe-memory-access: suppresses warnings from parquet-hadoop CleanUtil +# which uses sun.misc.Unsafe (upstream unfixed). Only available in Java 23+. +JAVA_MAJOR_VERSION=$("$JAVACMD" -version 2>&1 | head -1 | sed 's/.*"\([0-9]*\).*/\1/') +if [ "$JAVA_MAJOR_VERSION" -ge 23 ] 2>/dev/null; then + export JAVA_OPTS="$JAVA_OPTS --sun-misc-unsafe-memory-access=allow" +fi "$JAVACMD" $JAVA_OPTS -cp "${CLASSPATH}" cz.siret.prank.program.Main "$@" diff --git a/prank.sh b/prank.sh index 14f0aa6e..02226c29 100755 --- a/prank.sh +++ b/prank.sh @@ -16,12 +16,6 @@ export JAVA_OPTS="$JAVA_OPTS" export JAVA_OPTS="$JAVA_OPTS $JAVA_LOCALENV_PARAMS" -# Required for Apache Arrow memory access on Java 17+ -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.nio=ALL-UNNAMED" -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" -export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED" - - THIS_SCRIPT_DIR_REL_PATH="$( dirname "${BASH_SOURCE[0]}" )" export POCKET_RANK_BASE_DIR="$THIS_SCRIPT_DIR_REL_PATH/distro" @@ -41,13 +35,24 @@ else JAVACMD="java" fi +# JVM flags for compatibility with Java 17+ +# --add-opens: required by Apache Arrow and Netty for direct memory access via sun.misc.Unsafe +# --enable-native-access: required by zstd-jni for native library loading +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.nio=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED" +export JAVA_OPTS="$JAVA_OPTS --enable-native-access=ALL-UNNAMED" + +# --sun-misc-unsafe-memory-access: suppresses warnings from parquet-hadoop CleanUtil +# which uses sun.misc.Unsafe (upstream unfixed). Only available in Java 23+. +JAVA_MAJOR_VERSION=$("$JAVACMD" -version 2>&1 | head -1 | sed 's/.*"\([0-9]*\).*/\1/') +if [ "$JAVA_MAJOR_VERSION" -ge 23 ] 2>/dev/null; then + export JAVA_OPTS="$JAVA_OPTS --sun-misc-unsafe-memory-access=allow" +fi PARAMS="$PRANK_LOCALENV_PARAMS" -#CMD="$JAVACMD $JAVA_OPTS -cp ${CLASSPATH} cz.siret.prank.program.Main ${PARAMS} $@" -#echo "+" $CMD - "$JAVACMD" $JAVA_OPTS -cp "${CLASSPATH}" cz.siret.prank.program.Main ${PARAMS} "$@"