//以下代码在CMD中编译通过,但是运行时出错,很简单的代码,但找不到什么原因,请大家帮帮忙,谢谢,错误描述如下:
//Exception in thread 'main' java.lang.NoSuchMethodError:
//person.getInfo()Ljava/lang/String;
//       at TestOverWrite.main(TestOverWrite.java:46)class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getInfo() {
return "name: " + name + "\n age: " + age;
}
}class Student extends Person {
private String school;
public void setSchool(String school) {
this.school = school;
}
public String getSchool() {
return school;
}
public String getInfo() {
return "name: " + getName() + "\nage: " + getAge() 
+ "\nschool: " + school;
}

}public class TestOverWrite {
public static void main(String[] args) {
Student student = new Student();
Person person = new Person();
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
person.setName("None");
person.setAge(1000);
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}

解决方案 »

  1.   

    public String getInfo() {
    return "name: " + name + "\n age: " + age;
    }这个方法是编译完了才加上去的吗
      

  2.   

    我在netbeans这个IDE里反正是能运行
    结果是:un-single:
    name: None
     age: 1000
    name: John
    age: 18
    school: SCH如果你不能运行,可能是CLASSPATH的问题。建议你好好研究一下CLASSPATH或者改用个IDE。
      

  3.   

    那真是奇怪了,你们那编译运行都没问题。我的机子是怎么搞的。我编译运行其它的例子都没问题。
    我试过了,把
    System.out.println(person.getInfo()); 改成 
    System.out.println(person.getName()); 后,编译运行都没问题,再改回来又一样出错。System.out.println(student.getInfo()); 这个也是一样的错误提示。 
      

  4.   

    我又试着把
    public String getInfo() { 
       return "name: " + name + "\n age: " + age; 

    改成最简单的
    public String getInfo() { 
       return name; 

    也一样错误
      

  5.   

    环境变量 CLASSPATH 用来提供给系统搜索用户定义的类的缺省路径。各路径由分号隔开, 例如: .;C:javadocclasses;C:oolsjavaclasses 表示编译器遇到一个新类, 它先在本文件中查找它的定义, 如果没有, 则在本文件所处目录下其它文件中查找它的定义, 如果还没有, 则继续搜索C:javadocclasses目录中的所有文件, 以此类推。