Wrong JDK error message in VSCode
This commit is contained in:
34
nodejs-packages/jvm-launch-utils/package-lock.json
generated
34
nodejs-packages/jvm-launch-utils/package-lock.json
generated
@@ -1,8 +1,38 @@
|
||||
{
|
||||
"name": "@pivotal-tools/jvm-launch-utils",
|
||||
"version": "0.0.13",
|
||||
"lockfileVersion": 1,
|
||||
"version": "0.0.14",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@pivotal-tools/jvm-launch-utils",
|
||||
"version": "0.0.14",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "^9.4.6",
|
||||
"typescript": "^2.7.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "9.6.39",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.39.tgz",
|
||||
"integrity": "sha512-c3OkjgNpSMdHan56WhklP0FMOk5ocilKz2Mpa0NOGzu8jw5YERjCf9FG0epYB1+TxScv/oI4uJ204u2mUg7Hcw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "9.6.39",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@pivotal-tools/jvm-launch-utils",
|
||||
"version": "0.0.14",
|
||||
"version": "0.0.15",
|
||||
"description": "Provides utilities useful for launching Java processes from node packages.",
|
||||
"files": [
|
||||
"src",
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import * as FS from 'fs';
|
||||
import * as Path from 'path';
|
||||
import * as ChildProcess from 'child_process';
|
||||
import { basename } from 'path';
|
||||
|
||||
'use strict';
|
||||
|
||||
@@ -10,7 +9,7 @@ export interface JVM {
|
||||
* 8 = Java 1.8.x, 9 = Java 9.x, etc
|
||||
*/
|
||||
getMajorVersion() : number
|
||||
|
||||
|
||||
/**
|
||||
* Path to the Java executable
|
||||
*/
|
||||
@@ -26,19 +25,8 @@ export interface JVM {
|
||||
*/
|
||||
isJdk() : boolean
|
||||
|
||||
/**
|
||||
* Find tools.jar for this JVM.
|
||||
*
|
||||
* Note that if the JVM is a JRE; or a Java 9 or above JDK;
|
||||
* then this will return null.
|
||||
*/
|
||||
getToolsJar() : string | null
|
||||
|
||||
/**
|
||||
* Launch an executable jar with this jvm.
|
||||
* This autmatically adds tools.jar to the classpath if available.
|
||||
* WARNING: For adding tools jar to work properly, the jar must be packaged
|
||||
* using spring-boot-maven-plugin ZIP layout.
|
||||
*/
|
||||
jarLaunch(jar: string, vmargs?: string[], execFileOptions?: ChildProcess.ExecFileOptions) : ChildProcess.ChildProcess
|
||||
|
||||
@@ -47,10 +35,10 @@ export interface JVM {
|
||||
|
||||
/**
|
||||
* Find a JVM by looking in the JAVA_HOME and PATH environment variables.
|
||||
*
|
||||
*
|
||||
* Optionally, a specific javaHome can be passed in. This shortcuts the
|
||||
* search logic and uses that javaHome as is.
|
||||
*
|
||||
*
|
||||
* The returned JVM may or may not be a JDK. Methods are provided to obtain corresponding
|
||||
* toolsjar and to check whether the JVM is a JDK.
|
||||
*/
|
||||
@@ -59,8 +47,8 @@ export function findJvm(javaHome?: string) : Promise<JVM | null> {
|
||||
let javaExe = findJavaExe(javaHome);
|
||||
if (javaExe) {
|
||||
return getJavaInfo(javaExe).then(javaProps => new JVMImpl(
|
||||
javaProps.get("java.home"),
|
||||
javaExe,
|
||||
javaProps.get("java.home"),
|
||||
javaExe,
|
||||
getMajorVersion(javaProps)
|
||||
));
|
||||
}
|
||||
@@ -72,7 +60,7 @@ export function findJvm(javaHome?: string) : Promise<JVM | null> {
|
||||
|
||||
/**
|
||||
* Like findJvm, but additionally, if the found JVM is not a JDK tries to
|
||||
* find a companion JDK that may be installed alongside it.
|
||||
* find a companion JDK that may be installed alongside it.
|
||||
*/
|
||||
export function findJdk(javaHome?: string) : Promise<JVM | null> {
|
||||
return findJvm(javaHome).then(jvm => {
|
||||
@@ -82,10 +70,10 @@ export function findJdk(javaHome?: string) : Promise<JVM | null> {
|
||||
if (!jvm.isJdk()) {
|
||||
console.log("found jvm is not a JDK");
|
||||
|
||||
//Try to find a 'sibling' JDK.
|
||||
//Try to find a 'sibling' JDK.
|
||||
//Mainly for windows where it is common to have side-by-side install of a jre and jdk, instead of a
|
||||
//nested jre install inside of a jdk.
|
||||
|
||||
|
||||
//E.g.
|
||||
//C:\ProgramFiles\Java\jdk1.8.0_161
|
||||
//C:\ProgramFiles\Java\jre1.8.0_161
|
||||
@@ -136,7 +124,7 @@ function findJavaExe(javaHome?: string) : string | null {
|
||||
}
|
||||
}
|
||||
|
||||
for (var searchPath of process.env['PATH'].split(Path.delimiter)) {
|
||||
for (let searchPath of process.env['PATH'].split(Path.delimiter)) {
|
||||
let javaExe = Path.resolve(searchPath, binName);
|
||||
if (FS.existsSync(javaExe)) {
|
||||
//Resolve symlinks
|
||||
@@ -160,42 +148,20 @@ function memoize<T>(getter : Getter<T>) : Getter<T> {
|
||||
};
|
||||
}
|
||||
|
||||
const TOOLS_JAR_PATHS : string[][] = [
|
||||
["lib", "tools.jar"],
|
||||
["..", "lib", "tools.jar"]
|
||||
];
|
||||
|
||||
class JVMImpl implements JVM {
|
||||
javaHome : string
|
||||
javaExe : string
|
||||
version : number
|
||||
toolsJar: () => string | null;
|
||||
constructor(javaHome : string, javaExe : string, version : number) {
|
||||
this.javaHome = javaHome;
|
||||
this.javaExe = javaExe;
|
||||
this.version = version;
|
||||
this.toolsJar = memoize(() => this.findToolsJar());
|
||||
}
|
||||
|
||||
getJavaHome() : string {
|
||||
return this.javaHome;
|
||||
}
|
||||
|
||||
findToolsJar() : string | null {
|
||||
if (this.version>=9) {
|
||||
return null;
|
||||
}
|
||||
let javaHome = this.getJavaHome();
|
||||
for (var tjp of TOOLS_JAR_PATHS) {
|
||||
let toolsJar = Path.resolve(javaHome, ...tjp);
|
||||
if (FS.existsSync(toolsJar)) {
|
||||
return toolsJar;
|
||||
}
|
||||
}
|
||||
//Not found.
|
||||
return null;
|
||||
}
|
||||
|
||||
getMajorVersion() {
|
||||
return this.version;
|
||||
}
|
||||
@@ -203,22 +169,10 @@ class JVMImpl implements JVM {
|
||||
return this.javaExe;
|
||||
}
|
||||
isJdk(): boolean {
|
||||
//Consider memoizing?
|
||||
if (this.version<9) {
|
||||
return this.getToolsJar()!=null;
|
||||
} else {
|
||||
return FS.existsSync(Path.resolve(this.getJavaHome(), "jmods", "jdk.management.jmod"));
|
||||
}
|
||||
}
|
||||
getToolsJar(): string {
|
||||
return this.toolsJar();
|
||||
return FS.existsSync(Path.resolve(this.getJavaHome(), "jmods", "jdk.management.jmod"));
|
||||
}
|
||||
jarLaunch(jar: string, vmargs?: [string], execFileOptions?: ChildProcess.ExecFileOptions): ChildProcess.ChildProcess {
|
||||
let args = [];
|
||||
let toolsJar = this.getToolsJar();
|
||||
if (toolsJar) {
|
||||
args.push("-Dloader.path="+toolsJar);
|
||||
}
|
||||
if (vmargs) {
|
||||
args.push(...vmargs);
|
||||
}
|
||||
@@ -232,10 +186,6 @@ class JVMImpl implements JVM {
|
||||
// Classpath
|
||||
args.push('-cp');
|
||||
let classpathStr = classpath.join(Path.delimiter);
|
||||
const toolsJar = this.getToolsJar();
|
||||
if (toolsJar) {
|
||||
classpathStr += Path.delimiter + toolsJar;
|
||||
}
|
||||
args.push(classpathStr);
|
||||
|
||||
// JVM Arguments
|
||||
@@ -298,4 +248,4 @@ function correctBinname(binname: string) {
|
||||
return binname + '.exe';
|
||||
else
|
||||
return binname;
|
||||
}
|
||||
}
|
||||
|
||||
14
vscode-extensions/commons-vscode/package-lock.json
generated
14
vscode-extensions/commons-vscode/package-lock.json
generated
@@ -9,7 +9,7 @@
|
||||
"version": "0.2.4",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.14",
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.15",
|
||||
"deep-equal": "^1.0.1",
|
||||
"portfinder": "^1.0.25"
|
||||
},
|
||||
@@ -25,9 +25,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pivotal-tools/jvm-launch-utils": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.14.tgz",
|
||||
"integrity": "sha512-SndeImJC7YBX5qmwDQQKiW0abUpV9ffVT2CYFaVusgWLaZnkDn9hv5eb0b6W+O/z7mh2Qm8s8Cdzb3OPGGS3/Q=="
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.15.tgz",
|
||||
"integrity": "sha512-AjZ+yVJ3zvM9SLno+OhxeYbNNhAZWHf/VfLO9D9w3Um/WGKJ/8DhTQ2VTV9uBm5gYFZWUeOEV+bvS4dBn7cYPg=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "12.20.6",
|
||||
@@ -375,9 +375,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.14.tgz",
|
||||
"integrity": "sha512-SndeImJC7YBX5qmwDQQKiW0abUpV9ffVT2CYFaVusgWLaZnkDn9hv5eb0b6W+O/z7mh2Qm8s8Cdzb3OPGGS3/Q=="
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.15.tgz",
|
||||
"integrity": "sha512-AjZ+yVJ3zvM9SLno+OhxeYbNNhAZWHf/VfLO9D9w3Um/WGKJ/8DhTQ2VTV9uBm5gYFZWUeOEV+bvS4dBn7cYPg=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.20.6",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"prepack": "tsc -p ./"
|
||||
},
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.14",
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.15",
|
||||
"deep-equal": "^1.0.1",
|
||||
"portfinder": "^1.0.25"
|
||||
},
|
||||
|
||||
@@ -132,7 +132,12 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
|
||||
|
||||
let version = jvm.getMajorVersion();
|
||||
if (version<11) {
|
||||
VSCode.window.showErrorMessage('Java-based Language Server requires Java 11 or higher (using ' + javaExecutablePath + ')', {});
|
||||
VSCode.window.showErrorMessage(
|
||||
`Spring Tools Language Server requires Java 11 or higher to be launched. Current Java ${javaExecutablePath}.\n
|
||||
\n
|
||||
(Note Java 8 can still be used in your own projects. Java 11 is only required to launch the Spring Tools Language Server process)`,
|
||||
{}
|
||||
);
|
||||
return;
|
||||
}
|
||||
log("isJavaEightOrHigher => true");
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
"node_modules/@pivotal-tools/commons-vscode": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "file:../commons-vscode/pivotal-tools-commons-vscode-0.2.4.tgz",
|
||||
"integrity": "sha512-Dv1DEOl9C60bqzdFyvFDU/lj28/B2BZvK4WUF3Mitfdr6LEMo+Z5h1EaG3bJFU/SJ9hB/K8OP6n5kBNW2FUnUw==",
|
||||
"integrity": "sha512-4KQmORBEzxwcwMWUOZannZYc/cHawK8whE8uCsq01quFrw76awoKA1AORgJGq4jvJzMhVEfzPm8lUYjH2xDg2A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.14",
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.15",
|
||||
"deep-equal": "^1.0.1",
|
||||
"portfinder": "^1.0.25"
|
||||
},
|
||||
@@ -39,9 +39,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pivotal-tools/jvm-launch-utils": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.14.tgz",
|
||||
"integrity": "sha512-SndeImJC7YBX5qmwDQQKiW0abUpV9ffVT2CYFaVusgWLaZnkDn9hv5eb0b6W+O/z7mh2Qm8s8Cdzb3OPGGS3/Q=="
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.15.tgz",
|
||||
"integrity": "sha512-AjZ+yVJ3zvM9SLno+OhxeYbNNhAZWHf/VfLO9D9w3Um/WGKJ/8DhTQ2VTV9uBm5gYFZWUeOEV+bvS4dBn7cYPg=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "12.20.6",
|
||||
@@ -930,9 +930,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vscode-languageclient/node_modules/semver": {
|
||||
"version": "7.3.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
@@ -991,17 +991,17 @@
|
||||
"dependencies": {
|
||||
"@pivotal-tools/commons-vscode": {
|
||||
"version": "file:../commons-vscode/pivotal-tools-commons-vscode-0.2.4.tgz",
|
||||
"integrity": "sha512-Dv1DEOl9C60bqzdFyvFDU/lj28/B2BZvK4WUF3Mitfdr6LEMo+Z5h1EaG3bJFU/SJ9hB/K8OP6n5kBNW2FUnUw==",
|
||||
"integrity": "sha512-4KQmORBEzxwcwMWUOZannZYc/cHawK8whE8uCsq01quFrw76awoKA1AORgJGq4jvJzMhVEfzPm8lUYjH2xDg2A==",
|
||||
"requires": {
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.14",
|
||||
"@pivotal-tools/jvm-launch-utils": "0.0.15",
|
||||
"deep-equal": "^1.0.1",
|
||||
"portfinder": "^1.0.25"
|
||||
}
|
||||
},
|
||||
"@pivotal-tools/jvm-launch-utils": {
|
||||
"version": "0.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.14.tgz",
|
||||
"integrity": "sha512-SndeImJC7YBX5qmwDQQKiW0abUpV9ffVT2CYFaVusgWLaZnkDn9hv5eb0b6W+O/z7mh2Qm8s8Cdzb3OPGGS3/Q=="
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@pivotal-tools/jvm-launch-utils/-/jvm-launch-utils-0.0.15.tgz",
|
||||
"integrity": "sha512-AjZ+yVJ3zvM9SLno+OhxeYbNNhAZWHf/VfLO9D9w3Um/WGKJ/8DhTQ2VTV9uBm5gYFZWUeOEV+bvS4dBn7cYPg=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.20.6",
|
||||
@@ -1700,9 +1700,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "7.3.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user