pub(crate) fn detect_java_major() -> Option<u32>
java -version writes to stderr, not stdout. Any spawn failure means “no usable java”, which is exactly what the preflight wants to hear.
java -version