Java程序调用Student构造器报错NoSuchMethodError问题求助
构造方法错误:NoSuchMethodError 排查与解决
错误信息
Exception in thread "main" java.lang.NoSuchMethodError: 'void Student.
(int, java.lang.String)'
at oops5.main(oops5.java:18)
核心问题
你在oops5.java第18行调用了Student(int, String)构造方法,但你的Student类中未定义该参数类型及顺序的构造方法,或是存在编译/代码不匹配问题。
常见原因及解决办法
缺少对应构造方法
如果Student类里只定义了无参构造或其他参数的构造,就会触发这个错误。直接在Student类中添加匹配的构造方法即可:public class Student { // 根据实际需求定义类成员变量 private int id; private String name; // 添加与调用逻辑匹配的构造方法 public Student(int id, String name) { this.id = id; this.name = name; } }构造方法参数类型/顺序不匹配
比如你定义的构造方法是Student(String name, int id),但调用时传的是new Student(1, "张三"),参数顺序颠倒就会报错。解决方式:要么调整调用时的参数顺序,要么修改构造方法的参数顺序以匹配调用逻辑。构造方法名或类名拼写错误
构造方法名必须和类名完全一致(包括大小写),比如类名是Student,构造方法写成studnet就会失效。检查并修正拼写即可。编译文件未更新
如果修改了Student类但未重新编译,运行时会加载旧的class文件,导致构造方法不匹配。重新编译所有相关类:javac Student.java oops5.java之后再运行程序。
内容的提问来源于stack exchange,提问作者Vishal Saini
相关产品推荐
相关产品推荐

