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

VSCode编写Java代码出现java.lang.NoSuchMethodError问题求助

Java报错java.lang.NoSuchMethodError排查方案

问题分析

从报错信息和代码来看,核心矛盾是:你在代码中定义了带String和int参数的person构造方法,但JVM找不到这个构造方法。报错里的全限定类名显示person类属于introduction.inputFromScanner.loops.nestedLoopsPatterns.logicalOperators.OOPS包,但你提供的代码里没有声明包语句,这是关键问题之一。

可能原因及解决步骤

  • 包声明与项目结构不匹配
    代码缺少对应包的声明,导致编译后的class文件和运行时预期的类路径不匹配。解决:
    在person类和parameterizedConst类的代码最顶部添加包语句:

    package introduction.inputFromScanner.loops.nestedLoopsPatterns.logicalOperators.OOPS;
    

    同时确保项目目录结构和包名一致:在项目源码目录下创建层级目录introduction/inputFromScanner/loops/nestedLoopsPatterns/logicalOperators/OOPS,把两个Java文件放入该目录。

  • 编译缓存导致旧class文件残留
    VSCode可能缓存了旧的class文件,新修改的代码没有重新编译。解决:

    1. 打开VSCode命令面板(Ctrl+Shift+P),输入"Tasks: Run Build Task",选择清理项目的任务;
    2. 删除项目目录下的bin或target文件夹(存放编译后的class文件);
    3. 重新编译并运行代码。
  • 类路径运行错误
    如果用命令行运行,不要直接在Java文件所在目录执行java parameterizedConst,需回到项目根目录(比如D:\eclipse-workspace\Yaman Java),用全限定类名运行:

    java introduction.inputFromScanner.loops.nestedLoopsPatterns.logicalOperators.OOPS.parameterizedConst
    

验证方法

修改完成后,重新编译代码,检查生成的class文件是否在对应包目录下,再运行程序,即可正常调用参数化构造方法。

内容的提问来源于stack exchange,提问作者YAMAN GAUTAM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:04