Original Reddit post

Hey everyone, Spent a good chunk of time trying to get the jdtls-lsp@claude-plugins-official plugin working on Windows 11 for Java support in Claude Code. Figured I’d save others the headache since I couldn’t find a clear writeup anywhere. TL;DR: The official LSP plugins don’t work on Windows. Not just jdtls --> all of them. There are three separate bugs stacking on top of each other. The fix right now is to use MCP servers instead i guess. if my R n D datapoints is wrong , then pls guide me in comments if any windows user was able to get it working What’s happening You enable the jdtls-lsp plugin from the marketplace, everything looks fine, then you get: ENOENT: no such file or directory, uv_spawn ‘jdtls’ yeah usually my first instinct is “okkay I just need jdtls on my PATH” but… nope. Doesn’t help. I tried everything. Custom lspServers overrides in settings.json, adding the bin folder to PATH, wrapping it with cmd /c, deleting .claude.json to reset state. Nothing worked so , from my R n D the reason why it’s broken i beleive (verified against actual GitHub issues): There are three bugs hitting you at once: The plugin loader never actually registers LSP servers ( https://github.com/anthropics/claude-code/issues/15148 ). The LSP manager initializes with 0 servers, plugins load after that, and the manager never re-scans. So the server definition in marketplace.json just… never gets picked up. This affects every OS, not just Windows. The startupTimeout field crashes initialization ( https://github.com/anthropics/claude-code/issues/16888 ). The jdtls-lsp plugin config has “startupTimeout”: 120000 but that feature isn’t implemented yet. Claude Code literally throws: “startupTimeout is not yet implemented. Remove this field from the configuration.” This fires before anything else even happens. Node.js spawn() can’t run .bat files on Windows ( https://github.com/anthropics/claude-code/issues/17136 ). On Windows, jdtls is a .bat wrapper. Node.js uses libuv under the hood which only looks for .exe and .com --> it completely ignores PATHEXT. So it never finds jdtls.bat no matter what you do with your PATH. Same issue hits pyright-lsp, typescript-lsp, basically everything. So even if you fix one of these, the other two still block you. And no, there’s no lspServers override mechanism for plugin-defined configs. That key in settings.json doesn’t do anything for marketplace plugins. What actually works right now if you really want - serena or mcp server Disable the official plugin and use an MCP server instead. MCP config goes through a completely different code path that actually works. Options I found

https://github.com/stephanj/LSP4J-MCP – wraps JDTLS, gives you symbol search, find references, go to definition. Launches via java.exe so no .bat spawn issues.

https://github.com/pzalutski-pixel/javalens-mcp – 56 semantic analysis tools built on Eclipse JDT. More feature-rich if you want the full experience.

https://github.com/oraios/serena – supports 34 languages, auto-downloads JDTLS. Python-based though so you’d need to sort out the python launcher on Windows too. LSP4J-MCP or JavaLens are the cleanest since they just need java.exe which Windows has no problem spawning. Example MCP config in your settings: { “mcpServers”: { “java-lsp”: { “command”: “C:\Program Files\Java\jdk-21\bin\java.exe”, “args”: [“-jar”, “C:\path\to\lsp4j-mcp.jar”, “C:\your\project”, “jdtls”] } } } One more thing - if you see people saying “just add jdtls to your PATH”, that won’t work on Windows because of Bug 3. Even with jdtls.bat perfectly on your PATH, spawn() will never find it. The fix needs to come from Anthropic’s side (shell: true on Windows or using cross-spawn). Also worth noting - version 2.1.x is Claude Code (the CLI), not Claude Desktop. Claude Desktop is 1.1.x and doesn’t , even have an lspServers field or plugin marketplace. Just in case anyone’s confused about which config file to edit. Hope this saves someone a few hours. If Anthropic folks are reading this – #15148 is the big one. 52 upvotes and it blocks every single LSP marketplace plugin from working. submitted by /u/Excellent_Status_901

Originally posted by u/Excellent_Status_901 on r/ClaudeCode