redhat-developer / redhat-developer/vscode-java
Unexpected errors produced when "javac" support enabled with Lombok
还没有人认领这个 Issue。
- 主要语言
- TypeScript
- 星标
- 2.3k
- 派生
- 546
- 平均合并
- 20 小时 1 分钟
- 30 天内合并 PR
- 11
描述
- os:win11
- jdk:openjdk24
- project jdk:openjdk21
- build with gradle
workspace setting
{ "java.import.gradle.home": "D:\\Applications\\Scoop\\apps\\gradle\\current\\", "java.import.gradle.java.home": "D:\\Applications\\Scoop\\apps\\openjdk21\\current", "java.configuration.updateBuildConfiguration": "interactive", "gradle.allowParallelRun": true, "java.compile.nullAnalysis.mode": "automatic", "java.jdt.ls.javac.enabled": "on", "java.completion.engine": "dom", "java.jdt.ls.vmargs": "-Xmx2G --enable-preview", "java.project.encoding": "setDefault", "java.jdt.ls.lombokSupport.enabled": false }
work good in self class
but not work in other class
build.gradle
plugins {
`java-library`
`maven-publish`
id("io.freefair.lombok") version "8.14"
}
group = "com.j.c"
version = "0.0.1-SNAPSHOT"
description = "gradle-test"
allprojects{
if (project.name == "gradle-platform") return@allprojects
repositories {
maven ( url="https://maven.aliyun.com/repository/public" )
maven ( url="https://repo.maven.apache.org/maven2" )
maven ( url="https://repo.spring.io/libs-snapshot" )
maven ( url="https://repo.spring.io/libs-milestone" )
mavenLocal()
mavenCentral()
}
apply(plugin = "java-library")
apply(plugin = "io.freefair.lombok")
java.sourceCompatibility = JavaVersion.VERSION_21
java.targetCompatibility = JavaVersion.VERSION_21
tasks.withType<JavaCompile>() {
options.encoding = "UTF-8"
options.compilerArgs.add("--enable-preview")
}
tasks.withType<Javadoc>() {
options.encoding = "UTF-8"
}
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
}
}
errorlog
[Error - 4:57:53 PM] Jul 13, 2025, 4:57:53 PM Error in calling delegate command handler
gradle-platform does not exist
Java Model Exception: Error in Java Model (code 969): gradle-platform does not exist
at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:548)
at org.eclipse.jdt.internal.core.JavaModelManager.getPerProjectInfoCheckExistence(JavaModelManager.java:2549)
at org.eclipse.jdt.internal.core.JavaProject.getPerProjectInfo(JavaProject.java:2361)
at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2434)
at org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1806)
at org.eclipse.jdt.internal.core.JavaProject.getAllPackageFragmentRoots(JavaProject.java:1797)
at com.microsoft.jdtls.ext.core.ProjectCommand.getMainClasses(ProjectCommand.java:243)
at com.microsoft.jdtls.ext.core.CommandHandler.executeCommand(CommandHandler.java:35)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler$1.run(WorkspaceExecuteCommandHandler.java:230)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.jdt.ls.core.internal.handlers.WorkspaceExecuteCommandHandler.executeCommand(WorkspaceExecuteCommandHandler.java:220)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$4(JDTLanguageServer.java:616)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:692)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:529)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1394)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1970)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Jul 13, 2025 4:57:53 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError
����: Internal error: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.core.IMethod.getCompilationUnit()" because "iMethod" is null
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.core.IMethod.getCompilationUnit()" because "iMethod" is null
at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:325)
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:361)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:366)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:695)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:529)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1394)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1970)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.core.IMethod.getCompilationUnit()" because "iMethod" is null
at org.eclipse.jdt.internal.corext.refactoring.code.makestatic.InitialConditionsChecker.checkSourceAvailable(InitialConditionsChecker.java:181)
at org.eclipse.jdt.internal.corext.refactoring.code.MakeStaticRefactoring.checkInitialConditions(MakeStaticRefactoring.java:127)
at org.eclipse.jdt.ls.core.internal.corrections.RefactorProcessor.getMakeMethodStaticRefactoringProposal(RefactorProcessor.java:1189)
at org.eclipse.jdt.ls.core.internal.corrections.RefactorProcessor.getProposals(RefactorProcessor.java:228)
at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getCodeActionCommands(CodeActionHandler.java:221)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$15(JDTLanguageServer.java:775)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:692)
... 5 more
[Error - 4:57:53 PM] Request textDocument/codeAction failed.
Message: Internal error.
Code: -32603
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.core.IMethod.getCompilationUnit()" because "iMethod" is null
at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:325)
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:361)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:366)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:695)
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:529)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1394)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1970)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.core.IMethod.getCompilationUnit()" because "iMethod" is null
at org.eclipse.jdt.internal.corext.refactoring.code.makestatic.InitialConditionsChecker.checkSourceAvailable(InitialConditionsChecker.java:181)
at org.eclipse.jdt.internal.corext.refactoring.code.MakeStaticRefactoring.checkInitialConditions(MakeStaticRefactoring.java:127)
at org.eclipse.jdt.ls.core.internal.corrections.RefactorProcessor.getMakeMethodStaticRefactoringProposal(RefactorProcessor.java:1189)
at org.eclipse.jdt.ls.core.internal.corrections.RefactorProcessor.getProposals(RefactorProcessor.java:228)
at org.eclipse.jdt.ls.core.internal.handlers.CodeActionHandler.getCodeActionCommands(CodeActionHandler.java:221)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$15(JDTLanguageServer.java:775)
at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:692)
... 5 more
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
使用提供的 build.gradle 和工作区设置,在启用 JDK 24、项目 JDK 21、Gradle、Lombok 以及 javac 支持的情况下,复现 Windows 11 场景。从 ProjectCommand.getMainClasses 以及经过 CodeActionHandler、RefactorProcessor 和 MakeStaticRefactoring 的 code-action 路径开始;确定缺失的 gradle-platform 项目为何会导致这些错误。已完成的标准是:报告的代码操作不再产生日志中记录的失败。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- developer-experience, tooling
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 28/100