2016-04-03 19 views
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 

我從終端編譯和,即使添加了類路徑之後,我得到這個錯誤:

Compilation Error Image

+1

你是如何編譯的(命令行,來自IDE內部;如果你不使用IDE,那麼你會使自己的生活變得更加困難)。如果從命令行編譯,則必須向javac添加「-classpath」,其中「-classpath」包含'studentModel'類所在的目錄。順便說一句,請了解關於類名的Java約定(以Capital開頭),方法(camelCase)等等。它將使其他Java人員更容易閱讀您的代碼。 – KevinO

+0

你聽起來像一個語法錯誤。請提供給出錯誤的實際代碼。 public void display(studentModel Obj);'''是無效的java。 –

+0

我從Ubuntu 14的命令行編譯。04,正如你所建議@KevinO我添加了-classpath到javac,儘管如此,我收到了同樣的錯誤。您可以使用我已包含的圖片進行驗證。 –

回答

1

我不我自己經常對java使用命令行,但是我能夠重現問題。

什麼固定它,我是路過的所有源文件又像:

javac StudentModel.java StudentView.java 

有可能是一個更好的解決方案在那裏,但我希望這可以幫助的平均時間。

提示:如果您有make您可以使用它進行編譯,所以您不必一直輸入所有內容。

更簡單的解決方案是使用IDE tbh。

編輯:

我好奇的看着成指出,文件(link):根「對於一個指定包的.class文件,類路徑與包含在目錄結尾」 「包(全包名中的第一個包)」。

你的類是在一個名爲student包,所以從類路徑根,編譯器會尋找一個叫「學生」,在其中找到的.class在student封裝文件的文件夾。

+0

非常感謝幫助我@Jorn,並且_package_ _name_和_folder_ _name_都被命名爲** student **我認爲在命名_folder_或_package_時沒有任何問題。 再次感謝你 –

+0

@AneekRoy啊,關於後者。我的意思是應該把類路徑設置爲''/ home/some/path/to/sources'',而.class文件應該放在''/ home/some/path/to/sources/student ''''''學生'包中的課程。 –

+0

是的,工作太。我還閱讀了有關課程路徑的文檔,並感到困惑。感謝澄清@Jorn –

相關問題