in vscode/qodana/src/core/jdk/jbrDownloader.ts [137:178]
export function getJavaExecutablePath(): string | null {
let cmd: String;
if (os.platform() === 'win32') {
cmd = "java -XshowSettings:properties -version 2>&1 | findstr \"java.home\"";
} else {
cmd = "java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'";
}
let javaHome: string | null = null;
try {
javaHome = require('child_process').execSync(cmd).toString().split('=')[1].trim();
} catch (error) {
return null;
}
if (javaHome) {
if (os.platform() === 'win32') {
cmd = "java -XshowSettings:properties -version 2>&1 | findstr \"java.class.version\"";
} else {
cmd = "java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.class.version'";
}
let javaClassVersion: string | null = null;
try {
javaClassVersion = require('child_process').execSync(cmd).toString().split('=')[1].trim();
} catch (error) {
telemetry.errorReceived('#getJavaExecutablePath exception (getting java class version)');
console.log('Failed to get JAVA_HOME. ' + (error));
}
if (javaClassVersion) {
let version = javaClassVersion.split('.')[0];
if (version) {
if (parseInt(version) < 55) {
return null;
}
}
} else {
return null;
}
return path.join(javaHome, 'bin', 'java' + (os.platform() === 'win32' ? '.exe' : ''));
}
return null;
}