diff --git a/build.xml b/build.xml
index d227582aa95f..f976a3c63090 100644
--- a/build.xml
+++ b/build.xml
@@ -285,6 +285,7 @@
--add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED
+ --add-exports java.base/jdk.internal.util.jar=ALL-UNNAMED
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
diff --git a/conf/jvm22-server.options b/conf/jvm22-server.options
index 79b83707f0a6..1e5260882fe1 100644
--- a/conf/jvm22-server.options
+++ b/conf/jvm22-server.options
@@ -50,6 +50,7 @@
--add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming
--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+--add-exports java.base/jdk.internal.util.jar=ALL-UNNAMED
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
diff --git a/tools/bin/cassandra.in.sh b/tools/bin/cassandra.in.sh
index 4370fc144b02..31e9728b94c6 100644
--- a/tools/bin/cassandra.in.sh
+++ b/tools/bin/cassandra.in.sh
@@ -76,12 +76,16 @@ if [ -z $JAVA ] ; then
exit 1;
fi
+java_versions_supported=11,17,22
+
# Determine the sort of JVM we'll be running on.
java_ver_output=`"${JAVA:-java}" -version 2>&1`
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
JVM_VERSION=${jvmver%_*}
+short=$(echo "${jvmver}" | cut -c1-2)
+
+JAVA_VERSION=22
-JAVA_VERSION=11
if [ "$JVM_VERSION" = "1.8.0" ] ; then
JVM_PATCH_VERSION=${jvmver#*_}
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
@@ -96,6 +100,10 @@ if [ "$JVM_VERSION" = "1.8.0" ] ; then
elif [ "$JVM_VERSION" \< "11" ] ; then
echo "Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer)."
exit 1;
+elif [ "$short" = "11" ] ; then
+ JAVA_VERSION=11
+elif [ "$JVM_VERSION" \< "22" ] ; then
+ echo "Cassandra requires Java 11 or Java 22(or newer)."
fi
jvm=`echo "$java_ver_output" | grep -A 1 '[openjdk|java] version' | awk 'NR==2 {print $1}'`