在另一个类中编译时无法识别一个类的对象

时间:2016-04-03 19:17:53

标签: java object cannot-find-symbol

让我们在使用 Java 的软件包中说我们正在使用2个文件。 第一个说 StudentModel.java ,第二个说 StudentView.java

studentModel.java 的基本结构是:

package student;

public class StudentModel{
    private String name;// name of student
    private int roll;   // roll of student
    private String date;        
    private int marks[]=new int [6];
    private String sub[]=new String[6];
    private int total;

    /*to get the details of a student*/
    public int getRoll();
    public String getDate();

    public String getName();
    public void setDate(String dat);
    public void setName(String nam);
    public void setRoll(int roll);

    public void setSubjectAndMarks(int [] mar,String [] subject){
        for(int i =0;i<6;i++) {
            marks[i]=mar[i];            
            sub[i]=subject[i];
        }
    }

    public void displaySubjectAndMarks(){
        for(int y=0;y<5;y++) {
            System.out.println(sub[y]+"\t \t\t "+marks[y]);
        }
    }

    public int getTotal();  
}

StudentView.java 的基本结构是:

package student;

import java.util.*;

public class StudentView {
    /*displaying the marksheet of a particular student*/    
    public void display(StudentModel Obj) { 
        System.out.println("-------------------MARKSHEET---------------");
        System.out.println("\nName:"+Obj.getName()+"\tDate : "+Obj.getDate());
        System.out.println("------------------------------------");
        System.out.println("ROLL NO :\t\t" +Obj.getRoll());
        System.out.println("-------------------------------");
        System.out.println("SUBJECT \t\t MARKS");
        Obj.displaySubjectAndMarks();
        System.out.println("TOTAL"+Obj.getTotal());
    }
}

然后我首先编译了 StudentModel.java ,没有给出任何错误。然后我编译了 StudentView.java ,这引发了这个错误:

StudentView.java:18: error: cannot find symbol
public void display(StudentModel Obj) {
symbol:   class StudentModel
location: class StudentView
1 error

我正在从终端编译,即使添加了类路径,我也收到了这个错误:

Compilation Error Image

1 个答案:

答案 0 :(得分:1)

我自己不经常使用java命令行,但我能够重现问题。

为我修复的是一次传递所有源文件,如:

javac StudentModel.java StudentView.java

可能有一个更好的解决方案,但我希望这在平均时间有所帮助。

提示:如果您有make,则可以使用它进行编译,因此您无需一直输入所有内容。

更简单的解决方案是使用IDE tbh。

修改

我很好奇并查看了文档(link)其中注意到:“对于命名包中的.class文件,类路径以包含”root“包的目录结束(完整包名中的第一个包。)“

您的类位于名为student的包中,因此从类路径根目录开始,编译器将查找名为“student”的文件夹,在其中查找student中的.class文件封装