in src/java-runtime/index.ts [207:248]
export async function findJavaRuntimeEntries(): Promise<{
javaRuntimes?: JavaRuntimeEntry[],
projectRuntimes?: ProjectRuntimeEntry[],
javaDotHome?: string;
javaHomeError?: string;
}> {
if (!javaHomes) {
const runtimes: IJavaRuntime[] = await findRuntimes({ checkJavac: true, withVersion: true });
javaHomes = runtimes.filter(r => r.hasJavac);
}
const javaRuntimes: JavaRuntimeEntry[] = javaHomes.map(elem => ({
name: elem.homedir,
fspath: elem.homedir,
majorVersion: elem.version?.major || 0,
type: "from jdk-utils"
})).sort((a, b) => b.majorVersion - a.majorVersion);
let javaDotHome;
let javaHomeError;
try {
const runtime = await resolveRequirements();
javaDotHome = runtime.tooling_jre;
const javaVersion = runtime.tooling_jre_version;
if (!javaVersion || javaVersion < 11) {
javaHomeError = `Java 11 or more recent is required by the Java language support (redhat.java) extension. Preferred JDK "${javaDotHome}" (version ${javaVersion}) doesn't meet the requirement. Please specify or install a recent JDK.`;
}
} catch (error) {
javaHomeError = (error as Error).message;
}
let projectRuntimes = await getProjectRuntimesFromPM();
if (_.isEmpty(projectRuntimes)) {
projectRuntimes = await getProjectRuntimesFromLS();
}
return {
javaRuntimes,
projectRuntimes,
javaDotHome,
javaHomeError
};
}