0

假设在使用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

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

编译错误图像

4

1 回答 1

1

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

为我解决的问题是一次传递所有源文件,例如:

javac StudentModel.java StudentView.java

那里可能有更好的解决方案,但我希望这同时会有所帮助。

提示:如果你有make,你可以用它来编译,所以你不必一直输入所有的东西。

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

编辑:

我很好奇并查看了文档(链接),其中指出:“对于命名包中的 .class 文件,类路径以包含“根”包(完整包名中的第一个包)的目录结尾。 "

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

于 2016-04-03T20:02:39.443 回答