You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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-*
  • 重启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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:17:34