redhat-developer / redhat-developer/vscode-java
No autocompletions in Java 1.8-based projects due to "Missing system library" error
未关闭
还没有人认领这个 Issue。
bug
Gradle
- 主要语言
- TypeScript
- 星标
- 2.3k
- 派生
- 547
- 平均合并
- 20 小时 1 分钟
- 30 天内合并 PR
- 11
描述
This appears to be related to eclipse-jdt/eclipse.jdt.core#3298. I'm not sure when this changed but as of the update released yesterday I am now getting the following error in my logs any time I try to work on my Minecraft mod projects (e.g. glektarssza/minecraft-gtnh-customizer):
!ENTRY org.eclipse.jdt.core.manipulation 4 0 2025-10-29 09:43:37.638
!MESSAGE Error in JDT Core during AST creation
!STACK 0
java.lang.IllegalStateException: Missing system library
at org.eclipse.jdt.core.dom.ASTParser.checkForSystemLibrary(ASTParser.java:311)
at org.eclipse.jdt.core.dom.ASTParser.getClasspath(ASTParser.java:269)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1395)
at org.eclipse.jdt.core.dom.ASTParser.lambda$1(ASTParser.java:1274)
at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5709)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1274)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:918)
at org.eclipse.jdt.core.manipulation.CoreASTProvider$1.run(CoreASTProvider.java:294)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.jdt.core.manipulation.CoreASTProvider.createAST(CoreASTProvider.java:286)
at org.eclipse.jdt.core.manipulation.CoreASTProvider.getAST(CoreASTProvider.java:199)
at org.eclipse.jdt.ls.core.internal.JDTUtils.getAst(JDTUtils.java:1953)
at org.eclipse.jdt.ls.core.internal.handlers.SemanticTokensHandler.full(SemanticTokensHandler.java:45)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$57(JDTLanguageServer.java:1205)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:667)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:504)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
To replicate the issue:
- Ensure you have Git LFS installed properly (see this comment on redhat-developer/vscode-java#4218 for why).
- Clone the repository.
- Install the extensions outlined in the
Enabled Extensions Informationsection below. - Copy the appropriate template VSCode settings from
./templates/vscode/from inside the repository above into your./.vscode/settings.jsonfile inside the repository above. - Replace the Java paths inside the copied templates to a version of Java 21.
- Ensure your
JAVA_HOMEenvironment variable is set to a version of Java 17. - Run
./gradlew setupDecompWorkspaceinside the repository above. - Run
./gradlew buildinside the repository above. - Run
./gradlew eclipseinside the repository above. - Try to get autocompletion in any file.
- Observe the issue.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从复现仓库、其中的 templates/vscode/ 设置以及 issue 中列出的 Gradle 命令开始。通过 ASTParser、CoreASTProvider、JDTUtils 和 SemanticTokensHandler 跟踪 Missing system library 失败,然后比较 Java 1.8 项目设置下的行为。重复列出的设置后,如果自动补全能够在没有记录的错误的情况下工作,则视为完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java, typescript
- 领域
- developer-experience, tooling
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 28/100