Skip to content

Add configuration option for custom java-lsp-proxy binary path #261

@ThwyIgo

Description

@ThwyIgo

This extension uses a native binary (java-lsp-proxy) that wraps the JDTLS process.
We have options to define custom components paths (jdtls_launcher, lombok_jar, java_debug_jar). It would be great to also be able to define a custom path for java-lsp-proxy.

Reason:
I'm using NixOS and it doesn't follow FHS, which means native libraries aren't in standard directories and consequently the pre-built binary doesn't work:

2026-05-21T10:14:22-03:00 INFO  [lsp] starting language server process. binary path: "/home/thiago/.local/share/zed/extensions/work/java/proxy-bin/v6.8.17/java-lsp-proxy", working directory: "/home/thiago/Documentos/repos/microservico_dpn3_back", args: ["/home/thiago/.local/share/zed/extensions/work/java", "/home/thiago/.local/share/zed/nix/jdtls/bin/jdtls", "--jvm-arg=-javaagent:/home/thiago/.local/share/zed/nix/lombok/lombok.jar"]
2026-05-21T10:14:22-03:00 ERROR [crates/lsp/src/lsp.rs:531] cannot read LSP message headers
2026-05-21T10:14:22-03:00 ERROR [lsp] Shutdown request failure, server jdtls (id 2): server shut down
2026-05-21T10:14:22-03:00 ERROR [crates/lsp/src/lsp.rs:558] Broken pipe (os error 32)
2026-05-21T10:14:22-03:00 ERROR [project::lsp_store] Failed to start language server "jdtls": initializing server jdtls, id 2

Caused by:
    server shut down
2026-05-21T10:14:22-03:00 ERROR [project::lsp_store] server stderr: Could not start dynamically linked executable: /home/thiago/.local/share/zed/extensions/work/java/proxy-bin/v6.8.17/java-lsp-proxy
NixOS cannot run dynamically linked executables intended for generic
linux environments out of the box. For more information, see:
https://nix.dev/permalink/stub-ld

This happens because java-lsp-proxy can't find the native libraries it depends on (linux-vdso.so.1, libgcc_s.so.1, libc.so.6, /lib64/ld-linux-x86-64.so.2).

If this extension had an option that would allow me to use a java-lsp-proxy binary that I compiled myself, I could work around that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions