Fix java version check

The version check previously had multiple flaws.
The new check should correctly return only the major version number,
even for java 8 (identified as "1.8.x").

Change-Id: If774d32b276c5e5e06995c45216adcf1c0f7dd53
diff --git a/fpm/scripts/before-install.sh b/fpm/scripts/before-install.sh
index 6c4a1c6..84cd06e 100755
--- a/fpm/scripts/before-install.sh
+++ b/fpm/scripts/before-install.sh
@@ -26,9 +26,12 @@
 JAVA_VERSION=$(java -version 2>&1)
 [ $? != 0 ] && echo -e "NOT FOUND\nPlease install Java 21 or later and try again" && exit 2
 
-VERSION=`expr "$JAVA_VERSION" : '.*"\(21\..*\)["_]'`
+if [[ $JAVA_VERSION =~ .*\"(1\.)?([0-9]{1,2})\.[^\"_]+ ]]
+then
+  VERSION="${BASH_REMATCH[2]}"
+fi
 echo "$VERSION"
-test "$VERSION" "<" "17" && echo "ERROR: Java 21 or later is required by Gerrit" && exit 3
+test "$VERSION" -lt "21" && echo "ERROR: Java 21 or later is required by Gerrit" && exit 3
 
 # Script is invoked even before upgrade, we need to stop Gerrit if active
 GERRIT_PID=$(ps -o pid,command -u $USER | grep gerrit | awk '{print $1}')