diff --git a/vscode-extensions/commons-vscode/package-lock.json b/vscode-extensions/commons-vscode/package-lock.json index 75a64f06b..3dff926b2 100644 --- a/vscode-extensions/commons-vscode/package-lock.json +++ b/vscode-extensions/commons-vscode/package-lock.json @@ -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", diff --git a/vscode-extensions/commons-vscode/package.json b/vscode-extensions/commons-vscode/package.json index f3859d900..7c0be1db4 100644 --- a/vscode-extensions/commons-vscode/package.json +++ b/vscode-extensions/commons-vscode/package.json @@ -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" }, diff --git a/vscode-extensions/commons-vscode/src/launch-util.ts b/vscode-extensions/commons-vscode/src/launch-util.ts index f834699d6..05dfd0134 100644 --- a/vscode-extensions/commons-vscode/src/launch-util.ts +++ b/vscode-extensions/commons-vscode/src/launch-util.ts @@ -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 { 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 => {