in src/classpath/classpathConfigurationView.ts [123:169]
async function checkRequirement(): Promise<boolean> {
if (lsApi) {
return true;
}
const javaExt = vscode.extensions.getExtension("redhat.java");
if (!javaExt) {
classpathConfigurationPanel?.webview.postMessage({
command: "onException",
exception: ClasspathViewException.JavaExtensionNotInstalled,
});
const err: Error = new Error("The extension 'redhat.java' is not installed.");
setUserError(err);
sendError(err);
return false;
}
const javaExtVersion: string = javaExt.packageJSON.version;
if (compareVersions(javaExtVersion, MINIMUM_JAVA_EXTENSION_VERSION) < 0) {
classpathConfigurationPanel?.webview.postMessage({
command: "onException",
exception: ClasspathViewException.StaleJavaExtension,
});
const err: Error = new Error(`The extension version of 'redhat.java' (${javaExtVersion}) is too stale.`);
setUserError(err);
sendError(err);
return false;
}
await javaExt.activate();
lsApi = javaExt.exports;
if (lsApi) {
getExtensionContext().subscriptions.push(
lsApi.onDidProjectsImport(() => {
listProjects();
}),
lsApi.onDidClasspathUpdate((uri: vscode.Uri) => {
if (!path.relative(uri.fsPath, currentProjectRoot.fsPath)) {
// Use debounced function to avoid UI jittery
debounceLoadProjectClasspath(uri);
}
}),
);
}
return true;
}