Consider adding Java to `lsp.json`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia leggendo lsp.json e copilot-setup-steps.yml, quindi confronta le voci esistenti dei language server per C# e Go. Esamina l'installazione di jdtls, il wrapper, i requisiti del launcher e il comportamento di avvio di Maven; il lavoro è completo quando è disponibile una configurazione Java LSP convalidata oppure una decisione documentata di rimandarlo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The practice of moving copilot-sdk-java to copilot-sdk revealed that lsp.json does not currently have Java support.
Preliminary research revealed that adding jdtls may be a solution, but more research must be done before committing to this approach.
This work item tracks this matter.
Here is some state.
Assessment: Add Java LSP to lsp.json
Current State
lsp.json configures language servers for the Copilot coding agent (the cloud-based autonomous agent that works in GitHub Actions). It currently provides code intelligence for two languages:
- C# — via
dotnet tool run roslyn-language-server(installed as a .NET tool, scoped to dotnet) - Go — via
gopls serve(available aftersetup-go, scoped to go)
There is no Java entry. This has not been done.
What does it give the coding agent?
When a language server is configured, the Copilot coding agent gets IDE-quality code intelligence (go-to-definition, find-references, diagnostics, rename) while working autonomously. Without it, the agent relies on text search and heuristics for Java code, which is less reliable for a strongly-typed language with deep class hierarchies.
Feasibility Concern: jdtls installation
Unlike gopls (single binary, already on PATH after setup-go) or Roslyn (installable via dotnet tool), Eclipse JDT Language Server (jdtls) requires:
- Downloading a release archive (~70MB) from the Eclipse downloads mirror
- Extracting it to a known location
- Invoking it with a specific launcher jar path and a configuration directory
- Providing a
-dataworkspace path
This makes it harder to configure than the other two, but not impossible.
Plan
Option A: Install jdtls in copilot-setup-steps.yml and add to lsp.json (recommended)
-
Add a step to copilot-setup-steps.yml that downloads and extracts jdtls to a known path (e.g.,
$HOME/jdtls):- name: Install Eclipse JDT Language Server run: | JDTLS_VERSION="1.44.0" JDTLS_TIMESTAMP="202501301718" curl -fsSL "https://www.eclipse.org/downloads/download.php?file=/jdtls/milestones/${JDTLS_VERSION}/jdt-language-server-${JDTLS_VERSION}-${JDTLS_TIMESTAMP}.tar.gz&r=1" \ -o /tmp/jdtls.tar.gz mkdir -p "$HOME/jdtls" tar -xzf /tmp/jdtls.tar.gz -C "$HOME/jdtls" rm /tmp/jdtls.tar.gz -
Create a wrapper script at
.github/scripts/jdtls-wrapper.shthat launches jdtls in stdio mode:#!/bin/bash exec java \ -Declipse.application=org.eclipse.jdt.ls.core.id1 \ -Dosgi.bundles.defaultStartLevel=4 \ -Declipse.product=org.eclipse.jdt.ls.core.product \ -Dlog.level=ALL \ -noverify \ --add-modules=ALL-SYSTEM \ --add-opens java.base/java.util=ALL-UNNAMED \ --add-opens java.base/java.lang=ALL-UNNAMED \ -jar "$HOME/jdtls/plugins/org.eclipse.equinox.launcher_"*.jar \ -configuration "$HOME/jdtls/config_linux" \ -data "$HOME/jdtls-workspace" -
Update lsp.json to add a Java entry:
"java": { "command": "bash", "args": [".github/scripts/jdtls-wrapper.sh"], "fileExtensions": { ".java": "java" }, "rootUri": "java" }
Option B: Skip this (keep it optional/deferred)
The coding agent already works on Java code in this repo without an LSP — it uses mvn verify for compilation feedback and the java-coding-skill SKILL.md for guidance. The agent's productivity without an LSP is "good enough" for the current volume of Java agent work. This could be deferred until the feature is better documented or until a simpler jdtls installation method exists (e.g., a GitHub Action or a single-binary distribution).
Recommendation
Go with Option B (defer) for now, for these reasons:
- The lsp.json feature itself is not publicly documented — the schema, behavior, and supported options are not well-specified.
- jdtls installation is fragile (version pinning, platform-specific config directory:
config_linuxvsconfig_macvsconfig_win, launcher jar glob matching). - The agent runner is Ubuntu-only for Copilot cloud agent, so
config_linuxworks, but this adds a maintenance burden for version updates. - The plan item was marked "(optional)" in the migration plan for exactly these reasons.
- The coding agent already successfully builds and tests Java via
mvn verify— the LSP would provide incremental improvement, not a critical fix.
If you want to proceed anyway
The implementation is straightforward — the three changes above (setup step, wrapper script, lsp.json entry). The main risk is jdtls version rot and the fact that jdtls takes 10-30 seconds to initialize a Maven project, which may slow down the agent's startup. I'd suggest opening a separate low-priority issue to track this and revisit when GitHub documents the lsp.json schema officially.
- Lingua principale
- TypeScript
- Stelle
- 10.5k
- Fork
- 1.5k
- Merge medio
- 1g 7h
- PR unite (30g)
- 98
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/copilot-sdk
-
Clarify SDK architecture and in-process runtime transportForse già presa @KalebCole l’ha presa 2 giorni fa. Apertadocumentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
github/copilot-sdk#2804 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Python ModelLimits drops max_output_tokens from model metadataForse già presa @HDMowri l’ha presa 4 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
github/copilot-sdk#2798 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
github/copilot-sdk#2793 ·
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
github/copilot-sdk#2782 ·
I maintainer di solito rispondono entro 1 giorno
-
Rust: subagent lifecycle hooks are logged as unknownForse già presa @hackberry-lab l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
github/copilot-sdk#2781 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di github/copilot-sdk
Issue simili
-
Add: CanalPlusSport8SK.skApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The shared instance selector's placeholder and no-match text ignore the display languageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
apache/rocketmq-dashboard#5561 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CopilotKit/OpenDots#69 ·
I maintainer di solito rispondono entro 1 giorno
-
sendDefaultPii is reported as deprecated on ReactNativeOptions although dataCollection is hiddenApertaBug React-Native Waiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
getsentry/sentry-react-native#6830 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
OSCI'26
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
GauravKarakoti/SecureFlow#1215 ·
I maintainer di solito rispondono entro 1 giorno