Use redhat java extension embedded JDK to laucnh LS

This commit is contained in:
BoykoAlex
2022-01-17 15:29:06 -05:00
parent d71b70b39b
commit 29db241bb2
3 changed files with 24 additions and 8 deletions

View File

@@ -9,7 +9,7 @@
"version": "0.2.4",
"license": "MIT",
"dependencies": {
"@pivotal-tools/jvm-launch-utils": "0.0.17",
"@pivotal-tools/jvm-launch-utils": "0.0.18",
"deep-equal": "^2.0.5",
"portfinder": "^1.0.28"
},
@@ -25,9 +25,9 @@
}
},
"node_modules/@pivotal-tools/jvm-launch-utils": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.17.tgz",
"integrity": "sha512-W7evOmGDaWQSpBNcvMmKXpHw2PZ0jBI2REA84DQSmDds+1X0OGcwiu9uaAnGwKzS2zscueZCsPow8aRN6jucFg=="
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.18.tgz",
"integrity": "sha512-gxtow7DYXfFW82rxnSwZmskHS5YkYyFGBaWAnUXw4/oKqcHo2m8Bw86mZjldwrepOyc1nTAx3wrH/+Rb5ZtImA=="
},
"node_modules/@types/node": {
"version": "16.11.11",
@@ -809,9 +809,9 @@
},
"dependencies": {
"@pivotal-tools/jvm-launch-utils": {
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.17.tgz",
"integrity": "sha512-W7evOmGDaWQSpBNcvMmKXpHw2PZ0jBI2REA84DQSmDds+1X0OGcwiu9uaAnGwKzS2zscueZCsPow8aRN6jucFg=="
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.18.tgz",
"integrity": "sha512-gxtow7DYXfFW82rxnSwZmskHS5YkYyFGBaWAnUXw4/oKqcHo2m8Bw86mZjldwrepOyc1nTAx3wrH/+Rb5ZtImA=="
},
"@types/node": {
"version": "16.11.11",

View File

@@ -24,7 +24,7 @@
"prepack": "tsc -p ./"
},
"dependencies": {
"@pivotal-tools/jvm-launch-utils": "0.0.17",
"@pivotal-tools/jvm-launch-utils": "0.0.18",
"deep-equal": "^2.0.5",
"portfinder": "^1.0.28"
},

View File

@@ -108,6 +108,21 @@ function getJdtUserDefinedJavaHome(log: VSCode.OutputChannel): string {
return javaHome;
}
function findJdtEmbeddedJRE(): string | undefined{
const javaExtension = VSCode.extensions.getExtension('redhat.java');
if (javaExtension) {
const jreHome = Path.resolve(javaExtension.extensionPath, 'jre');
if (FS.existsSync(jreHome) && FS.statSync(jreHome).isDirectory()) {
const candidates = FS.readdirSync(jreHome);
for (const candidate of candidates) {
if (FS.existsSync(Path.join(jreHome, candidate, "bin"))) {
return Path.join(jreHome, candidate);
}
}
}
}
}
export function activate(options: ActivatorOptions, context: VSCode.ExtensionContext): Thenable<LanguageClient> {
if (options.CONNECT_TO_LS) {
return VSCode.window.showInformationMessage("Start language server")
@@ -123,6 +138,7 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
let findJRE = options.preferJdk ? findJdk : findJvm;
return findJRE(getSpringUserDefinedJavaHome(options.workspaceOptions, clientOptions.outputChannel)
|| findJdtEmbeddedJRE()
|| getJdtUserDefinedJavaHome(clientOptions.outputChannel),
msg => clientOptions.outputChannel.appendLine(msg))
.catch(error => {