function createServer()

in src/extension.ts [17:71]


	function createServer(): Promise<StreamInfo> {
		return new Promise((resolve, reject) => {
			var server = net.createServer((socket) => {
				console.log("Creating server");

				resolve({
					reader: socket,
					writer: socket
				});

				socket.on('end', () => console.log("Disconnected"));
			}).on('error', (err) => {
				// handle errors here
				throw err;
			});

			let javaExecutablePath = findJavaExecutable('java');
			if (javaExecutablePath == null) {
				const messageOptions:MessageOptions = {modal:false};
				window.showErrorMessage("Couldn't locate java in $JAVA_HOME or $PATH. ", messageOptions, "Install Java").then(select => {
					if(select === "Install Java"){
						env.openExternal(Uri.parse('https://' + "www.java.com/ja/download/manual.jsp"))
					}else{
						window.showErrorMessage("VDM++ language server can't launching.")
					}
				})
				return
			}
 			// grab a random port.
			server.listen(() => {
				// Start the child java process
				let options = { cwd: workspace.rootPath };

				let args = [
					'-jar',
					path.resolve(context.extensionPath, './', 'assets', 'vdmpp-language-server-1.0-SNAPSHOT.jar'),
					server.address().port.toString()
				]

				let process = child_process.spawn(javaExecutablePath, args, options);

				// Send raw output to a file
				if (!fs.existsSync(context.storagePath))
					fs.mkdirSync(context.storagePath);

				let logFile = context.storagePath + '/vscode-languageserver-java-example.log';
				let logStream = fs.createWriteStream(logFile, { flags: 'w' });

				process.stdout.pipe(logStream);
				process.stderr.pipe(logStream);

				console.log(`Storing log in '${logFile}'`);
			});					
		});
	};