Cannot fall back to JS-based CLS when native binary fails to start · Issue #116 · microsoft/copilot-for-eclipse · GitHub
Skip to content

Cannot fall back to JS-based CLS when native binary fails to start #116

Closed

Description

Feedback source

None

GitHub Copilot plugin version

0.16.0.202604020254

Eclipse IDE and version

Eclipse Platform 2025-09 with ABAP Development Tools

Platform

Microsoft Windows NT 10.0.22631.0 x64
Node v24.11.1

Steps to reproduce

  1. Have a group policy in place that forbids execution of .exe files in %AppData%, which is where Eclipse plugins reside in our installation
  2. Use a fresh Eclipse installation with the Marketplace Client
  3. Install GitHub Copilot 0.16 from the Eclipse Marketplace
  4. Restart Eclipse
  5. Confirm Copilot quick start window
  6. Face the below described "actual behavior"

Logs (optional)

!ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-10 11:02:16.497
!MESSAGE [Info] Starting language server with binary lsp agent.

!ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-10 11:02:16.501
!MESSAGE [Info] Found native binary in fragment bundle: com.microsoft.copilot.eclipse.core.agent.win32

!ENTRY org.eclipse.lsp4e 4 0 2026-04-10 11:02:18.141
!MESSAGE java.lang.IllegalStateException: Input stream must be configured.
!STACK 0
java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.lang.IllegalStateException: Input stream must be configured.
	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
	... 8 more

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 11:02:18.142
!MESSAGE [Error] java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
!STACK 0
java.util.concurrent.CompletionException: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$9(LanguageServerWrapper.java:475)
	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
	... 9 more
Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
	... 8 more
Caused by: java.lang.IllegalStateException: Input stream must be configured.
	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
	... 8 more

!ENTRY org.eclipse.lsp4e 4 0 2026-04-10 11:02:18.148
!MESSAGE java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
!STACK 0
java.util.concurrent.CompletionException: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$9(LanguageServerWrapper.java:475)
	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
	... 9 more
Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
	... 8 more
Caused by: java.lang.IllegalStateException: Input stream must be configured.
	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
	... 8 more

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 11:02:18.274
!MESSAGE [Error] Failed to load built-in modes
!STACK 0
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$18(CopilotLanguageServerConnection.java:379)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	... 4 more

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 11:02:18.279
!MESSAGE [Error] Failed to load custom modes from LSP
!STACK 0
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$18(CopilotLanguageServerConnection.java:379)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	... 4 more

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 11:02:18.299
!MESSAGE [Error] java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
!STACK 0
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$24(CopilotLanguageServerConnection.java:432)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	... 4 more

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 11:02:18.368
!MESSAGE [Error] java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
!STACK 0
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$24(CopilotLanguageServerConnection.java:432)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	... 4 more

!ENTRY com.sap.adt.util 1 0 2026-04-10 11:02:18.539
!MESSAGE try to find keystore(s) of operating system

!ENTRY com.sap.adt.util 1 0 2026-04-10 11:02:18.575
!MESSAGE successfully loaded keystore "Windows-ROOT"

!ENTRY com.sap.adt.util 1 0 2026-04-10 11:02:18.622
!MESSAGE successfully loaded keystore "Windows-MY"

Expected behavior

Falling back to node-based LSP, like in this log output from 0.15:

!ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-10 10:34:07.602
!MESSAGE [Info] Starting language server with binary lsp agent.

!ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-10 10:34:07.605
!MESSAGE [Info] Found native binary in fragment bundle: com.microsoft.copilot.eclipse.core.agent.win32

!ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-10 10:34:09.228
!MESSAGE [Error] Binary LSP agent start failed. Retrying with JS agent.
!STACK 0
java.io.IOException: Cannot run program "<redacted>\installation\2025-09\configuration\org.eclipse.osgi\793\0\.cp\copilot-agent\copilot-language-server.exe": CreateProcess error=1260, This program is blocked by group policy. For more information, contact your system administrator
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1188)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1105)
	at org.eclipse.lsp4e.server.ProcessStreamConnectionProvider.start(ProcessStreamConnectionProvider.java:58)
	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.startBinaryLspAgent(LsStreamConnectionProvider.java:85)
	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.start(LsStreamConnectionProvider.java:68)
	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:399)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.io.IOException: CreateProcess error=1260, This program is blocked by group policy. For more information, contact your system administrator
	at java.base/java.lang.ProcessImpl.create(Native Method)
	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:516)
	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:161)
	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1142)
	... 12 more

!ENTRY com.sap.adt.util 1 0 2026-04-10 10:34:09.635
!MESSAGE try to find keystore(s) of operating system

!ENTRY com.sap.adt.util 1 0 2026-04-10 10:34:09.662
!MESSAGE successfully loaded keystore "Windows-ROOT"

!ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-10 10:34:09.698
!MESSAGE [Info] JS agent started successfully.

Actual behavior

After startup, we get this error message:
Image

This causes Copilot to be not usable.
More can be found in the logs above.

Additional information

Could probably be worked around if a solution for #53 was in place.

Activity

  1. jdneo commented on Apr 10, 2026

    @jdneo
    Member

    Wired. We did not change the launch logic. But why this time the binary cls dies not throw the permission error? Did you change the installation location?

  2. MergingMonkey commented on Apr 15, 2026

    @MergingMonkey
    Author

    No, the installation location is the same in both cases. Same machine too.

  3. jdneo commented on Apr 22, 2026

    @jdneo
    Member

    I'm not sure if it is related with the node runtime search. The current implementation will not search for the os installation location at first -> causing find a node js runtime which cannot meet the requirement.

    I'll try to make some fix and release a nightly build. Will inform you once it is available.

  4. jdneo commented on Apr 23, 2026

    @jdneo
    Member

    @MergingMonkey Could you please try the latest nightly? https://marketplace.eclipse.org/content/github-copilot-nightly

  5. MergingMonkey commented on Apr 23, 2026

    @MergingMonkey
    Author

    @jdneo
    Thanks, I just tried with 0.16.0.202604230218_nightly, previously uninstalling 0.15. Still the same symptoms.
    Logs:

    !SESSION 2026-04-23 11:51:05.704 -----------------------------------------------
    eclipse.buildId=4.37.0.I20250905-0730
    java.version=21.0.8
    java.vendor=SAP SE
    BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
    Framework arguments:  -pluginCustomization plugin_customization.ini
    Command-line arguments:  -os win32 -ws win32 -arch x86_64 -pluginCustomization plugin_customization.ini -data @user.home\AppData\Roaming\Eclipse for SAP\workspaces\default
    
    !ENTRY org.eclipse.emf.ecore 2 0 2026-04-23 11:51:08.723
    !MESSAGE Both 'com.sap.adt.testdoubles.cds.model' and 'com.sap.adt.testdoubles.cds.model' register a package for 'http://www.sap.com/adt/dbtestdoubles/cds/testcases'
    
    !ENTRY org.eclipse.emf.ecore 2 0 2026-04-23 11:51:08.723
    !MESSAGE Both 'com.sap.adt.testdoubles.cds.model' and 'com.sap.adt.testdoubles.cds.model' register a package for 'http://www.sap.com/adt/dbtestdoubles/cds/testcases'
    
    !ENTRY org.eclipse.emf.ecore 2 0 2026-04-23 11:51:08.730
    !MESSAGE Both 'com.sap.adt.tools.core.base' and 'org.abapgit.adt.backend' register a package for 'http://www.w3.org/2005/Atom'
    
    !ENTRY org.eclipse.emf.ecore 2 0 2026-04-23 11:51:08.730
    !MESSAGE Both 'com.sap.adt.testdoubles.cds.model' and 'com.sap.adt.testdoubles.cds.model' register an extension parser for 'cdstestcases'
    
    !ENTRY org.eclipse.emf.ecore 2 0 2026-04-23 11:51:08.730
    !MESSAGE Both 'com.sap.adt.tools.core.base' and 'org.abapgit.adt.backend' register an extension parser for 'atom'
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-23 11:51:15.868
    !MESSAGE [Info] Starting language server with binary lsp agent.
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-04-23 11:51:15.872
    !MESSAGE [Info] Found native binary in fragment bundle: com.microsoft.copilot.eclipse.core.agent.win32
    
    !ENTRY org.eclipse.lsp4e 4 0 2026-04-23 11:51:15.889
    !MESSAGE java.lang.IllegalStateException: Input stream must be configured.
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
    	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.lang.IllegalStateException: Input stream must be configured.
    	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
    	... 8 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-23 11:51:15.890
    !MESSAGE [Error] java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
    	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
    	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$9(LanguageServerWrapper.java:475)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
    	... 9 more
    Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
    	... 8 more
    Caused by: java.lang.IllegalStateException: Input stream must be configured.
    	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
    	... 8 more
    
    !ENTRY org.eclipse.lsp4e 4 0 2026-04-23 11:51:15.894
    !MESSAGE java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
    	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
    	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$9(LanguageServerWrapper.java:475)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
    	... 9 more
    Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: Input stream must be configured.
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791)
    	... 8 more
    Caused by: java.lang.IllegalStateException: Input stream must be configured.
    	at org.eclipse.lsp4j.jsonrpc.Launcher$Builder.create(Launcher.java:310)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$1(LanguageServerWrapper.java:435)
    	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
    	... 8 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-23 11:51:18.602
    !MESSAGE [Error] Failed to load built-in modes
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
    	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    	at java.base/java.lang.Thread.run(Thread.java:1583)
    Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$18(CopilotLanguageServerConnection.java:385)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
    	... 4 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-23 11:51:18.607
    !MESSAGE [Error] Failed to load custom modes from LSP
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
    	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    	at java.base/java.lang.Thread.run(Thread.java:1583)
    Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.listModes(com.microsoft.copilot.eclipse.core.lsp.protocol.ConversationModesParams)" because "server" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$18(CopilotLanguageServerConnection.java:385)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
    	... 4 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-23 11:51:18.632
    !MESSAGE [Error] java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
    	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    	at java.base/java.lang.Thread.run(Thread.java:1583)
    Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$24(CopilotLanguageServerConnection.java:438)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
    	... 4 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-04-23 11:51:18.699
    !MESSAGE [Error] java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
    	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    	at java.base/java.lang.Thread.run(Thread.java:1583)
    Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.registerTools(com.microsoft.copilot.eclipse.core.lsp.protocol.RegisterToolsParams)" because "server" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$24(CopilotLanguageServerConnection.java:438)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
    	... 4 more
    
  6. jdneo commented on Apr 23, 2026

    @jdneo
    Member

    Wired, from the logs seems that it does not fallback to the js language server.

    Because I did not see !MESSAGE [Error] Binary LSP agent start failed. Retrying with JS agent. in the log.

    Is that possible that the binary language server is allowed to run but immediately killed?

    Could you check if there is any nodejs process (the copilot language server process) running after starting Eclipse?

  7. MergingMonkey commented on May 8, 2026

    @MergingMonkey
    Author

    0.15 (working version):
    The node is started from a .node folder in the installation directory - I didn't know that until now!
    Image

    I assume this Node installation comes from the Node.js embedder from Wild Web Developer 1.2.1:
    Image

    I knew that this plugin was necessary to install to get Copilot working at all in our environment. Because if it is not installed, we get an error too:

    Image

    Here's the log from 0.15 without Node.js embedder from Wild Web Developer ("!ENTRY com.microsoft.copilot.eclipse 4 0 2026-05-08 10:33:15.004" is interesting):

    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-05-08 10:33:14.960
    !MESSAGE [Info] Starting language server with binary lsp agent.
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-05-08 10:33:14.964
    !MESSAGE [Info] Found native binary in fragment bundle: com.microsoft.copilot.eclipse.core.agent.win32
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-05-08 10:33:14.976
    !MESSAGE [Error] Binary LSP agent start failed. Retrying with JS agent.
    !STACK 0
    java.io.IOException: Cannot run program "C:\Users\schroeterj\AppData\Roaming\Eclipse for SAP\installation\2025-09\configuration\org.eclipse.osgi\793\0\.cp\copilot-agent\copilot-language-server.exe": CreateProcess error=1260, This program is blocked by group policy. For more information, contact your system administrator
    	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1188)
    	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1105)
    	at org.eclipse.lsp4e.server.ProcessStreamConnectionProvider.start(ProcessStreamConnectionProvider.java:58)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.startBinaryLspAgent(LsStreamConnectionProvider.java:85)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.start(LsStreamConnectionProvider.java:68)
    	at org.eclipse.lsp4e.LoggingStreamConnectionProviderProxy.start(LoggingStreamConnectionProviderProxy.java:227)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:399)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.io.IOException: CreateProcess error=1260, This program is blocked by group policy. For more information, contact your system administrator
    	at java.base/java.lang.ProcessImpl.create(Native Method)
    	at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:516)
    	at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:161)
    	at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1142)
    	... 13 more
    
    !ENTRY com.microsoft.copilot.eclipse 1 0 2026-05-08 10:33:14.997
    !MESSAGE [Info] Get JavaScript commands aborted. org.eclipse.wildwebdeveloper.embedder.node.NodeJSManager not found.
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-05-08 10:33:15.004
    !MESSAGE [Error] Failed to get JavaScript commands. 
    !STACK 0
    java.io.IOException: Node path not found
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.getJavaScriptCommands(LsStreamConnectionProvider.java:124)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.startJsLspAgent(LsStreamConnectionProvider.java:90)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.start(LsStreamConnectionProvider.java:71)
    	at org.eclipse.lsp4e.LoggingStreamConnectionProviderProxy.start(LoggingStreamConnectionProviderProxy.java:227)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:399)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    
    !ENTRY org.eclipse.lsp4e 4 0 2026-05-08 10:33:15.006
    !MESSAGE java.io.UncheckedIOException: java.io.IOException: Node path not found
    !STACK 0
    java.util.concurrent.CompletionException: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:401)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    	... 6 more
    Caused by: java.io.IOException: Node path not found
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.getJavaScriptCommands(LsStreamConnectionProvider.java:124)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.startJsLspAgent(LsStreamConnectionProvider.java:90)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.start(LsStreamConnectionProvider.java:71)
    	at org.eclipse.lsp4e.LoggingStreamConnectionProviderProxy.start(LoggingStreamConnectionProviderProxy.java:227)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:399)
    	... 7 more
    
    !ENTRY org.eclipse.lsp4e 4 0 2026-05-08 10:33:15.008
    !MESSAGE java.lang.RuntimeException: java.util.concurrent.CompletionException: java.io.UncheckedIOException: java.io.IOException: Node path not found
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:994)
    	at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974)
    	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760)
    	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
    	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
    	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
    	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
    	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
    Caused by: java.lang.RuntimeException: java.util.concurrent.CompletionException: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$9(LanguageServerWrapper.java:475)
    	at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990)
    	... 9 more
    Caused by: java.util.concurrent.CompletionException: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
    	... 6 more
    Caused by: java.io.UncheckedIOException: java.io.IOException: Node path not found
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:401)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    	... 6 more
    Caused by: java.io.IOException: Node path not found
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.getJavaScriptCommands(LsStreamConnectionProvider.java:124)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.startJsLspAgent(LsStreamConnectionProvider.java:90)
    	at com.microsoft.copilot.eclipse.core.lsp.LsStreamConnectionProvider.start(LsStreamConnectionProvider.java:71)
    	at org.eclipse.lsp4e.LoggingStreamConnectionProviderProxy.start(LoggingStreamConnectionProviderProxy.java:227)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$0(LanguageServerWrapper.java:399)
    	... 7 more
    
    !ENTRY com.microsoft.copilot.eclipse 4 0 2026-05-08 10:33:15.010
    !MESSAGE [Error] java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.checkStatus(com.microsoft.copilot.eclipse.core.lsp.protocol.CheckStatusParams)" because "server" is null
    !STACK 0
    java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.checkStatus(com.microsoft.copilot.eclipse.core.lsp.protocol.CheckStatusParams)" because "server" is null
    	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
    	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
    	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    	at java.base/java.lang.Thread.run(Thread.java:1583)
    Caused by: java.lang.NullPointerException: Cannot invoke "com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServer.checkStatus(com.microsoft.copilot.eclipse.core.lsp.protocol.CheckStatusParams)" because "server" is null
    	at com.microsoft.copilot.eclipse.core.lsp.CopilotLanguageServerConnection.lambda$0(CopilotLanguageServerConnection.java:131)
    	at org.eclipse.lsp4e.LanguageServerWrapper.lambda$17(LanguageServerWrapper.java:982)
    	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
    	... 4 more
    

    So, 0.15 doesn't use the system's node, but can be worked around with Node.js embedder from Wild Web Developer. For 0.16 upwards, this workaround doesn't work.
    0.17 doesn't spawn a Node.js instance either, just like 0.16. Which is very sad because 0.17 seems to bring some interesting improvements for ABAP (thanks for that by the way).

    My node installation can be found in Windows Command Prompt and Powershell - so it is available from PATH:

    Image

    Why wouldn't 0.15 find it then? Maybe it's a hint at the root cause for all of this.

  8. MergingMonkey commented on May 8, 2026

    @MergingMonkey
    Author

    Regarding your first question ("Is that possible that the binary language server is allowed to run but immediately killed?"):

    I cannot confirm this 100%, but if I extract the .exe and start it, it will not be shown in the task manager, and I get this pop-up:

    Image
  9. jdneo commented on May 8, 2026

    @jdneo
    Member

    Why wouldn't 0.15 find it then? Maybe it's a hint at the root cause for all of this.

    Where do you install the node?

    We search several places to find the node installation, See:

  10. MergingMonkey commented on May 8, 2026

    @MergingMonkey
    Author

    It's at C:\Program Files\nodejs\node.exe, so the exact path that is searched in getDefaultNodePath called by getNodeFromDefaultLocation as the last fallback. So it should find it.

    But that's the issue in 0.15.
    In 0.16+, the fallback to NodeJS isn't even tried according to logs.

  11. MergingMonkey commented on May 8, 2026

    @MergingMonkey
    Author

    Gemini and Claude might have found the issue in LsStreamConnectionProvider.java:

    On Windows, when startBinaryLspAgent() throws IOException, the inner catch swallows it without rethrowing. The outer catch is never triggered, startJsLspAgent() is never called, and lsp4e then fails with "Input stream must be configured" because the streams are never set up.

    I wonder why this Linux workaround is even in place, since the comment refers to exactly this issue, which is created for Windows.

  12. jdneo commented on May 8, 2026

    @jdneo
    Member

    @MergingMonkey Your analysis seems right. Let me make a fix.

  13. changed the title [-]0.16 does not fall back to JS-based LSP when native binary fails to start[/-] [+]Cannot fall back to JS-based LSP when native binary fails to start[/+] on May 9, 2026
  14. changed the title [-]Cannot fall back to JS-based LSP when native binary fails to start[/-] [+]Cannot fall back to JS-based CLS when native binary fails to start[/+] on May 9, 2026
  15. jdneo commented on May 9, 2026

    @jdneo
    Member

    @MergingMonkey A nightly build released. Please check if the problem is solved.

    Meanwhile, feel free to let us know your feedback about abap development in 0.17.0.

  16. MergingMonkey commented on May 12, 2026

    @MergingMonkey
    Author

    @jdneo

    Yes, it works :)

    [Error] Binary LSP agent start failed. Retrying with JS agent.
    [Error] Binary LSP agent start failed. Retrying with JS agent.
    [Info] JS agent started successfully.
    

    and finally:

    [Info]	[lsp] GitHub Copilot Language Server 1.482.0 initialized
    

    Thank you for the quick fix!
    Looking forward to testing the new ABAP improvements in the next days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions