Skip to content

Commit d8db847

Browse files
committed
docs: add java to architecture coordinator list + troubleshooting entries
- architecture.md: include java in the standalone-stdio LSP example list - troubleshooting.md: two new sections — Eclipse ~/.eclipse sandbox write requirement (Equinox extracts JNI libs there on first start) and workspace/symbol latency vs documentSymbol on jdtls (background Building workspace job)
1 parent f4e83a0 commit d8db847

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

docs/troubleshooting.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,20 @@ Track progress at https://github.com/razzmatazz/csharp-language-server/issues.
6464

6565
**Fix:** Use `bin/vue-direct` (not the generic `lsp-stdio-proxy.js`). `vue-direct` dispatches to `vue-direct-coordinator.js` which spawns both children and bridges them correctly.
6666

67+
## jdtls fails on first start with `~/.eclipse: Operation not permitted`
68+
**Symptom:** `java-direct start` exits within seconds, log shows `java.nio.file.FileSystemException: ~/.eclipse: Operation not permitted` followed by an Eclipse Equinox stack trace ending with `jdtls exited 15 null`.
69+
70+
**Reason:** The Eclipse Equinox launcher extracts JNI native libraries into `~/.eclipse/` on first run. Sandboxed environments (Claude Code's macOS sandbox is one) deny writes to that path unless explicitly allowed.
71+
72+
**Fix:** allow writes to `~/.eclipse` and `~/.cache/java-direct` in the sandbox config. For Claude Code, add both to `Filesystem.write.allowOnly` in `~/.claude/settings.json`. After first successful start, `~/.eclipse` is populated and the issue does not recur.
73+
74+
## jdtls `workspace/symbol` returns empty right after start
75+
**Symptom:** `java-direct start` succeeds, `textDocument/documentSymbol` works, but `workspace/symbol '{"query":"X"}'` returns `[]` for a class you can clearly see.
76+
77+
**Reason:** jdtls runs an asynchronous "Building workspace" job after init. `workspace/symbol` indexes via that job; the rest of the LSP surface answers immediately from per-file parsing. On a small project the job settles in 5-15s; on a real Maven/Gradle project with transitive deps it can take 30-120s.
78+
79+
**Fix:** wait, then retry. For scripts, poll on `workspace/symbol` with a known sentinel symbol until you see a non-empty result.
80+
6781
## Workspace not detected
6882
**Symptom:** `<lang>-direct start` picks the wrong workspace or says "no workspace found".
6983

0 commit comments

Comments
 (0)