VSCode中Java Gradle项目运行测试时出现NoSuchMethodError问题
解决VSCode中Java Gradle项目间歇性NoSuchMethodError的问题
问题现象
原本运行正常的Java Gradle项目,重启VSCode后(推测组件更新),运行/调试测试时间歇性出现NoSuchMethodError;编辑保存源文件后通常能正常运行一次,但无代码变更再次尝试时几乎都会失败。已确认终端与Java运行时配置的Gradle版本均指向同一JDK 21,使用Java Extension Pack 0.29.0、Debugger for Java 0.58.1,更新至扩展包预览版后问题依旧。
报错日志
!ENTRY org.eclipse.core.resources 4 75 2025-03-06 18:12:02.231 !MESSAGE Errors occurred during the build. !SUBENTRY 1 com.microsoft.gradle.bs.importer 4 75 2025-03-06 18:12:02.231 !MESSAGE Errors running builder 'JavaProblemChecker' on project 'app'. !STACK 0 java.lang.NoSuchMethodError: 'java.util.List org.eclipse.jdt.internal.core.JavaProject.internalDefaultRootModules(java.lang.Iterable, java.util.function.Function, java.util.function.Function)' at com.microsoft.java.builder.jdtbuilder.ClasspathJrt.selectModules(ClasspathJrt.java:278) at com.microsoft.java.builder.jdtbuilder.ClasspathJrt.getModuleNames(ClasspathJrt.java:265) at com.microsoft.java.builder.jdtbuilder.NameEnvironment.collectModuleEntries(NameEnvironment.java:445) at com.microsoft.java.builder.jdtbuilder.NameEnvironment.computeClasspathLocations(NameEnvironment.java:343) at com.microsoft.java.builder.jdtbuilder.NameEnvironment.<init>(NameEnvironment.java:64) at com.microsoft.java.builder.JavaNameEnvironment.<init>(JavaNameEnvironment.java:41) at com.microsoft.java.builder.JavaProblemChecker.createNameEnvironment(JavaProblemChecker.java:51) at com.microsoft.java.builder.jdtbuilder.JavaBuilder.initializeBuilder(JavaBuilder.java:653) at com.microsoft.java.builder.jdtbuilder.JavaBuilder.build(JavaBuilder.java:192) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1077) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:296) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:352) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:441) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:444) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:555) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:503) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:585) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:207) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:300) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
解决方案
1. 清理VSCode Java扩展缓存
- 完全关闭VSCode
- 删除对应系统的Java扩展缓存目录:
- Windows:
%USERPROFILE%\.vscode\extensions\redhat.java-*(删除整个redhat.java开头的文件夹) - macOS/Linux:
~/.vscode/extensions/redhat.java-*
- Windows:
- 重启VSCode,重新安装Java Extension Pack,加载项目后测试
2. 重置Gradle构建缓存
在项目根目录终端执行:
# macOS/Linux ./gradlew clean build --no-build-cache # Windows gradlew.bat clean build --no-build-cache
构建完成后再次尝试运行测试。
3. 禁用VSCode自动增量构建
- 打开VSCode设置(快捷键
Ctrl+,),搜索java.configuration.updateBuildConfiguration,将值改为never - 搜索
java.autobuild.enabled,取消勾选自动构建 - 或直接在
.vscode/settings.json中添加:{ "java.configuration.updateBuildConfiguration": "never", "java.autobuild.enabled": false }
后续修改代码后,手动执行Gradle构建再运行测试。
4. 降级Java扩展到兼容版本
- 打开VSCode扩展面板,找到Java Extension Pack,点击右下角齿轮图标选择「Install Another Version」
- 选择0.28.x系列稳定版本,同时将Debugger for Java降级到0.57.x版本
- 重启VSCode后测试
内容的提问来源于stack exchange,提问作者TimK
相关产品推荐
相关产品推荐

