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}'`);
});
});
};