2016-04-03 11 views
0

を使用しているパッケージで言えば、Javaは2つのファイルを使用しています。 まずはStudentModel.javaと言って、もう1つはStudentView.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の基本的な構造は次のとおりです:

studentModel.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をコンパイルはエラーを生じなかった。

Compilation Error Image

+1

どのようにコンパイルしていますか(IDE内からのコマンドライン、IDEを使用していない場合は、自分自身の生活を難しくしています)。コマンドラインからコンパイルする場合は、javacに "-classpath"を追加する必要があります。ここで、 "-classpath"には 'studentModel'クラスが存在するディレクトリが含まれています。 BTWでは、クラス名(キャピタルから始まる)、メソッド(camelCase)などのJavaの規約について学んでください。他のJavaの人々がコードを読みやすくなります。 – KevinO

+0

構文エラーのような音がします。エラーが発生した実際のコードを入力してください。 '' 'public void display(studentModel Obj);' 'は有効なjavaではありません。 –

+0

私はUbuntu 14のコマンドラインからコンパイルしています。04とあなたが@KevinOを提案したように私はjavacに-classpathを追加し、同じエラーを受け取っていることを鼓舞します。私が含まれている画像で確認できます。 –

答えて

1

Iドン:

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

は私もクラスパスを追加した後、端末からコンパイルしています、私はこのエラーを得た:そして、私はこのエラーを発生させるStudentView.javaがコンパイル私はしばしば自分自身のためのコマンドラインを使用していないが、私は問題を再現することができた。何私のためにそれを固定するように一度にすべてのソースファイルを渡した

javac StudentModel.java StudentView.java 

そこよりよい解決策はそこに、おそらくですが、私は、これは平均時間に役立ちます願っています。

ヒント:makeをお持ちの場合は、コンパイルに使用できますので、常にすべてを入力する必要はありません。

単純な解決策は、IDE tbhを使用することです。

編集:私は好奇心旺盛だし、と指摘する文書(link)に見えた

ルート「という名前のパッケージ内の.classファイルの場合は、クラスパスに含まれるディレクトリで終わります」 "パッケージ(フルパッケージ名の最初のパッケージ)"クラスパスのルートから、コンパイラはstudentパッケージ内の.classファイルを見つけるためにする「学生」と呼ばれるフォルダを探しますので、

あなたしているクラスは、studentと呼ばれるパッケージです。

+0

@Jornと_package_ _name_と_folder_ _nameの両方を助けてくれてありがとうございます。私は、_folder_または_package_の名前を付けることによるtypoの問題があるとは思わない。 もう一度ありがとうございます –

+0

@AneekRoyああ、後者について。私は実際にクラスパスを '' '/ home/some/path/to/sources''に設定し、.classファイルは' ''/home/some/path/to/sources/studentになければなりません''学生 'パッケージのクラスのための '' '。 –

+0

あまりにもうまくいった。私はクラスパスについてのドキュメントも読んで、混乱しました。@Jornを明確にしてくれてありがとう –

関連する問題