@@ -130,17 +130,39 @@ echo -e "${CYAN}🔍 Analyzing JARs to determine required modules (jdeps)...${NC
130130# --multi-release 25: treat multi-release JARs as Java 25
131131# Note: Filter out jboss/wildfly jars which often have broken module descriptors
132132# Note: Do NOT use --class-path or --recursive to avoid resolving bad modules
133- DETECTED_MODULES=$( find " $JARS_DIR " -name " *.jar" | grep -v " jboss" | grep -v " wildfly" | grep -v " smallrye" | xargs jdeps --print-module-deps --ignore-missing-deps --multi-release 25 | grep -v " Warning" | tr ' ,' ' \n' | grep -v " Warning" | grep -v " :" | grep -v " /" | sort -u | paste -sd " ," -)
133+ RAW_JDEPS_OUTPUT=$( find " $JARS_DIR " -name " *.jar" | grep -v " jboss" | grep -v " wildfly" | grep -v " smallrye" | xargs jdeps --print-module-deps --ignore-missing-deps --multi-release 25 2>&1 || true)
134+ DETECTED_MODULES=$( echo " $RAW_JDEPS_OUTPUT " | tr ' ,' ' \n' | sed ' s/^ *//;s/ *$//' | grep -E ' ^[a-zA-Z0-9_.]+$' | sort -u | paste -sd " ," - || true)
135+
136+ JMODS_DIR=" ${JAVA_HOME} /jmods"
137+ if [ ! -d " $JMODS_DIR " ]; then
138+ JMODS_DIR=" ${JAVA_HOME} /lib/jmods"
139+ fi
140+
141+ if [ -d " $JMODS_DIR " ]; then
142+ AVAILABLE_MODULES=$( cd " $JMODS_DIR " && ls * .jmod 2> /dev/null | sed ' s/\.jmod$//' | sort -u | paste -sd " |" -)
143+ if [ -n " $AVAILABLE_MODULES " ]; then
144+ FILTERED_MODULES=$( echo " $DETECTED_MODULES " | tr ' ,' ' \n' | sed ' /^$/d' | grep -E " ^(${AVAILABLE_MODULES} )$" | sort -u | paste -sd " ," - || true)
145+ else
146+ FILTERED_MODULES=" $DETECTED_MODULES "
147+ fi
148+ else
149+ FILTERED_MODULES=" $DETECTED_MODULES "
150+ fi
134151
135152# Manual overrides:
136153# java.se: Stable baseline of standard Java SE modules needed by server/import/runtime paths
137154# jdk.management: Required by server metrics integrations
138155# jdk.zipfs: Required for JPype to load classes from JARs
139156# jdk.unsupported: Often required for Unsafe access in libraries
140157# jdk.incubator.vector: Required for vectorized execution paths
141- REQUIRED_MODULES=" ${DETECTED_MODULES} ,java.se,jdk.management,jdk.zipfs,jdk.unsupported,jdk.incubator.vector"
158+ if [ -n " $FILTERED_MODULES " ]; then
159+ REQUIRED_MODULES=" ${FILTERED_MODULES} ,java.se,jdk.management,jdk.zipfs,jdk.unsupported,jdk.incubator.vector"
160+ else
161+ REQUIRED_MODULES=" java.se,jdk.management,jdk.zipfs,jdk.unsupported,jdk.incubator.vector"
162+ fi
142163
143- echo -e " ${CYAN} 📦 Detected modules: ${YELLOW}${DETECTED_MODULES}${NC} "
164+ echo -e " ${CYAN} 📦 Detected modules (raw): ${YELLOW}${DETECTED_MODULES}${NC} "
165+ echo -e " ${CYAN} 📦 Detected modules (filtered): ${YELLOW}${FILTERED_MODULES}${NC} "
144166echo -e " ${CYAN} 📦 Final modules list: ${YELLOW}${REQUIRED_MODULES}${NC} "
145167
146168rm -rf " $SCRIPT_DIR /temp_jre"
0 commit comments