Skip to content

Commit 3cdbb5e

Browse files
committed
Verify that java.jdt.ls.java.home meets minimum JRE requirement.
- java.jdt.ls.java.home should only be used if it meets the minimum JRE requirement - Default to the embedded JRE (if available) otherwise - Display one-time notification message to inform that JVM set within 'java.jdt.ls.java.home' could not be used Signed-off-by: Roland Grunberg <[email protected]>
1 parent 9b6046e commit 3cdbb5e

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/requirements.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as expandHomeDir from 'expand-home-dir';
44
import * as fse from 'fs-extra';
55
import { findRuntimes, getRuntime, getSources, IJavaRuntime, JAVAC_FILENAME, JAVA_FILENAME } from 'jdk-utils';
66
import * as path from 'path';
7-
import { env, ExtensionContext, Uri, workspace } from 'vscode';
7+
import { env, ExtensionContext, Uri, window, workspace } from 'vscode';
88
import { Commands } from './commands';
99
import { logger } from './log';
1010
import { checkJavaPreferences } from './settings';
@@ -54,8 +54,16 @@ export async function resolveRequirements(context: ExtensionContext): Promise<Re
5454
}
5555
javaVersion = await getMajorVersion(javaHome);
5656
if (preferenceName === "java.jdt.ls.java.home" || !toolingJre) {
57-
toolingJre = javaHome;
58-
toolingJreVersion = javaVersion;
57+
if (javaVersion >= REQUIRED_JDK_VERSION) {
58+
toolingJre = javaHome;
59+
toolingJreVersion = javaVersion;
60+
} else {
61+
const neverShow: boolean | undefined = context.workspaceState.get<boolean>("java.home.failsMinRequiredFirstTime");
62+
if (!neverShow) {
63+
context.workspaceState.update("java.home.failsMinRequiredFirstTime", true);
64+
window.showInformationMessage(`The Java runtime set by 'java.jdt.ls.java.home' does not meet the minimum required version of '${REQUIRED_JDK_VERSION}' and will not be used.`);
65+
}
66+
}
5967
}
6068
}
6169

0 commit comments

Comments
 (0)