Bundled Lombok crashes JDT indexing in 1.57.2026090508: ConstructorDeclaration.constructorCall NoSuchFieldError
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- java, typescript, vscode
- Domínio
- developer-experience, devtools, testing-qa
Direção de pesquisa
Comece por test/suite/navigation.test.ts e pelo fixture JUnit vinculado no relatório; em seguida, inspecione o log isolado do language server em busca do NoSuchFieldError. Compare o acesso do Lombok empacotado com a alteração do JDT que remove ConstructorDeclaration.constructorCall. Está concluído quando a indexação não causar mais crashes e ambas as direções de navegação passarem com o Lombok habilitado, enquanto o controle desabilitado continuar passando.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Problem
[email protected] crashes the JDT background indexer through its bundled Lombok integration, even for a project that does not use Lombok. Java test/subject navigation then returns no matches. The previous prerelease, 1.57.2026090408, works on the same macOS runner.
Environment
- macOS 26.6.2, ARM64; GitHub runner image
20260831.0337.3 - VS Code
1.136.2 - Language Support for Java
1.57.2026090508(darwin-arm64) - JDT Core
3.48.0.v20260904-0811; compiler batch3.46.200.v20260904-0811 - JDT LS
1.62.0.202609050810 - Bundled
lombok-1.18.39-4050.jar - Language-server JVM reports Java
21.0.12.1 - Debugger for Java
0.59.2026072407; Test Runner for Java built from 5a4ee47
Reproduction
The affected project is the Test Runner's JUnit fixture, whose POM has no Lombok dependency.
- With Java prerelease
1.57.2026090508and the default Lombok support setting, run the existing navigation tests. - Navigating from
junit.Appto its test should returnjunit5.AppTest; navigating back should returnjunit.App. - Both commands instead return
items: [], and both assertions fail with0 !== 1. - Set
"java.jdt.ls.lombokSupport.enabled": falseonly in this fixture and start a fresh language-server session. Both navigation directions work again.
A complete macOS A/B workflow pins the failing Java extension and VS Code, builds the plugin, restores the original navigation implementation/assertions, and varies only the fixture's Lombok setting:
| Control | Result |
|---|---|
| Lombok enabled | 148 passing / 2 failing; indexer exception below |
| Lombok disabled | 150 main + 1 unmanaged test passing; both navigation directions restored |
The negative control intentionally fails. An additional original-source reproduction has the same 148/2 result without navigation instrumentation.
Exception and cause
The language-server log contains:
Background Indexer Crash Recovery
java.lang.NoSuchFieldError: Class org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration does not have member field 'org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall constructorCall'
at lombok.eclipse.EclipseAST.buildMethod(EclipseAST.java:467)
at lombok.eclipse.EclipseAST.buildMethods(EclipseAST.java:457)
...
at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.resolveDocument(SourceIndexer.java:197)
at org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexResolvedDocument(IndexManager.java:684)
at org.eclipse.jdt.internal.core.search.processing.JobManager.indexerLoop(JobManager.java:541)
JDT commit 0928a958, "Unify the bifurcated constructor body", removes ConstructorDeclaration.constructorCall. Inspection of the actual old/new compiler JARs confirms the field was removed, while the bundled Lombok still accesses it.
Passive diagnostics show correct source URIs, primary types, and source/test search scopes, but zero TypeNameRequestor.acceptType callbacks from searchAllTypeNames, despite WAIT_UNTIL_READY_TO_SEARCH. Results are not being discarded by the navigation adapter. The inherited-method navigation case still passes through its different type/hierarchy lookup.
Why this appeared macOS-only
The original Windows and Linux jobs installed 1.57.2026090408; macOS installed 1.57.2026090508. The Marketplace currently lists the newer version only for darwin-arm64 and darwin-x64. This is a package-version difference, not evidence that the incompatible binaries are safe on other operating systems.
Pinning the previous prerelease or stable 1.56.0 also passes on macOS. Both original attempts of microsoft/vscode-java-test#1927 selected the bad package; the failure also predates that dependency-only PR.
Expected behavior / mitigation
Indexing should not crash in a non-Lombok project. Please ship a compatible JDT/Lombok combination, or retain a compatible JDT version until the Lombok integration supports the new constructor representation.
Disabling the unused Lombok integration is a demonstrated workaround for this test fixture, not a general recommendation for projects that require Lombok. I have not tested an alternative newer Lombok build or the failing package on Windows/Linux.
The original CI log collector looked in the normal Code profile and missed the exception. The reproducer collects the actual isolated test profile under .vscode-test/user-data/User/workspaceStorage/.../redhat.java/jdt_ws/.metadata/.log.
- Linguagem predominante
- TypeScript
- Estrelas
- 2.3k
- Forks
- 549
- Merge médio
- 8h 20min
- PRs com merge (30d)
- 6
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de redhat-developer/vscode-java
-
JDK_HOME can be sorted after lower-priority auto-detected JDK sourcesTalvez já em andamento @shblue21 assumiu há 117 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
redhat-developer/vscode-java#4426 ·
Mantenedores costumam responder em até 1 dia
-
Java template regressionAbertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
redhat-developer/vscode-java#4539 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
redhat-developer/vscode-java#4537 ·
Mantenedores costumam responder em até 1 dia
-
bug Lombok
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
redhat-developer/vscode-java#4521 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug need info
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
redhat-developer/vscode-java#4520 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de redhat-developer/vscode-java
Issues semelhantes
-
[Bug] The clients language filter cannot select the rows the page labels as unknownTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
apache/rocketmq-dashboard#6103 ·
Mantenedores costumam responder em até 4 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
cockpit-project/cockpit-machines#2835 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
cloudflare/kumo#866 ·
Mantenedores costumam responder em até 1 dia
-
area:connector bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
autoInject recall silently drops memory injection on long / non-Latin prompts (HTTP 400 Query too long)Talvez já em andamento @Epsilon006 assumiu hoje. Abertaintegration:coding-agents
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
vectorize-io/hindsight#5476 · 1 comentário ·
Mantenedores costumam responder em até 1 dia