I have xtext language server project configured to build with maven. I want to connect the VS Code language client to the server via socket for debugging. In my xtext.ide/pom.xml, I have made the following change
<mainClass>org.eclipse.xtext.ide.server.SocketServerLauncher</mainClass>
and now I can run the jar file on command line
java -jar xtext.ide-1.0.0-SNAPSHOT-ls.jar -port 5008 -host 0.0.0.0
0 [main] INFO ext.ide.server.SocketServerLauncher - Started server socket at /0.0.0.0:5008
And in my VS Code extension.ts, I have the following
var client: LanguageClient;
let connectionInfo = {
port: 5008,
host: "0.0.0.0"
};
let serverInfo = () => {
// Connect to language server via socket
let socket = net.connect(connectionInfo);
let result: StreamInfo = {
writer: socket,
reader: socket
};
return Promise.resolve(result);
};
Once I start the extension, my server crashes with the error
java.lang.NoSuchMethodError: 'boolean org.eclipse.xtext.xbase.lib.ArrayExtensions.contains(java.lang.Object[], java.lang.Object)'
at org.eclipse.xtext.ide.server.SocketServerLauncher.getTrace(SocketServerLauncher.java:85)
at org.eclipse.xtext.ide.server.SocketServerLauncher.launch(SocketServerLauncher.java:64)
at org.eclipse.xtext.ide.server.SocketServerLauncher.main(SocketServerLauncher.java:52)
But seems that the version of org.eclipse.xtext.xbase.lib.ArrayExtensions I have on my classpath is correct:
(It was introduced here which got released in 2.20
Edit 1: I noticed that the version in xtext/META-INF/MANIFEST.MF was not as expected:
Require-Bundle: org.eclipse.xtext.xbase.lib;bundle-version="2.14.0"
I now updated that to 2.25.0, but the error is still the same.
