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文件,新修改的代码没有重新编译。解决:- 打开VSCode命令面板(Ctrl+Shift+P),输入"Tasks: Run Build Task",选择清理项目的任务;
- 删除项目目录下的
bin或target文件夹(存放编译后的class文件); - 重新编译并运行代码。
类路径运行错误
如果用命令行运行,不要直接在Java文件所在目录执行java parameterizedConst,需回到项目根目录(比如D:\eclipse-workspace\Yaman Java),用全限定类名运行:java introduction.inputFromScanner.loops.nestedLoopsPatterns.logicalOperators.OOPS.parameterizedConst
验证方法
修改完成后,重新编译代码,检查生成的class文件是否在对应包目录下,再运行程序,即可正常调用参数化构造方法。
内容的提问来源于stack exchange,提问作者YAMAN GAUTAM
相关产品推荐
相关产品推荐

