2017-10-21 5 views
0

はじめJavacを使ってクラスをJavaプログラムにインポートするには?

私は私のJavaプログラムをコンパイルして実行するために、端末とjavacを使用しています。個々のプログラムは正常に動作します。しかし、私がメインJavaプログラムにクラスをインポートしたいとき、私はエラーを受け取ります。

のソースコード - 私のクラス(Name.java)

public class Name { 

//Fields 
private String firstName; 
private String familyName; 


//Constructors 
public Name() { 
    firstName = ""; 
    familyName = ""; 
} 

public Name(String firstName, String familyName) { 
    this.firstName = firstName; 
    this.familyName = familyName; 
} 


//Methods 
public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public void setFamilyName(String familyName) { 
    this.familyName = familyName; 
} 

public String getFirstName() { 
    return firstName; 
} 

public String getFamilyName() { 
    return familyName; 
} 

public String getFullName() { 
    if (firstName.equals("") && familyName.equals("")) { 
     return ""; 
    } else { 
     return firstName + " " + familyName; 
    } 
} 

@Override 
public String toString() { 
    return "Name:[firstName=" + firstName + ", familyName=" + familyName + "]"; 
} 
} 

メイン - NameDemo.java

import Name; 

public class NameDemo { 

public static void main(String[] args) { 
    /* 
    * See below evidence of how arrays can store elements of a custom reference 
    * type that you create (Name in this case), as well as both existing 
    * reference types (e.g. String) or primitive types (e.g. int), that you have 
    * previously worked with. 
    */ 

    //declare array to hold four Name objects 
    Name[] friends = new Name[4]; 

    //create Name object and assign reference into array 
    Name joe = new Name("Joe", "Bloggs"); 
    friends[0] = joe; 

    //create Name objects and assign reference directly into array 
    friends[1] = new Name("Fred", "Perry"); 
    friends[2] = new Name("Diti", "Hammond"); 
    friends[3] = new Name("Bulsar", "Raymond"); 

    //loop through each element 
    for(int i = 0; i < friends.length; i++) { 
     //use accessor method to output full name of each 
     System.out.println(friends[i].getFullName()); 
    } 

    //declare boolean used as a flag 
    boolean exists = false; 

    //loop through each Name object using a for-each loop (you will see more on this when we cover ArrayLists) 
    for (Name nm : friends) { 
     //check family name 
     if (nm.getFamilyName().equals("Smith")) { 
      exists = true; 
     } 
    } 

    //output result of search 
    if (exists) { 
     System.out.println("There is a person with family name of Smith"); 
    } else { 
     System.out.println("There is not a person with family name of Smith"); 
    } 

    //Checking output of toString 
    System.out.println("\n" + joe.toString()); 

} 

} 

両方のファイルが内部にある問題同じディレクトリ。これと同じように、私はクラスをメインプログラムのソースコードにインポートしました。私は両方を試してコンパイルします。

インポート名;

javac Name.java 
javac NameDemo.java 
NameDemo.java:4: error: '.' expected 
import Name; 
     ^
NameDemo.java:4: error: ';' expected 
import Name; 
      ^
2 errors 

なぜこれが起こっている、私はクラスをコンパイルすることが出来るのですか?クラスが.classまたは.javaで終わる必要があるかどうかこれはインポートとの構文上の問題ですか?だから、

+1

デフォルトのパッケージからクラスをインポートすることはできません。良いニュースは:両方のクラスがそこに住んでいるので、あなたはする必要はありません。単に 'import'文を省略してください。 – Marvin

答えて

0

  1. あなたはIDEをダウンロードする必要があり、私はあなたのEclipseをお勧めします。これは後でプログラムするのに役立ちます。
  2. EVERYのファイルをjavacに渡す必要があります。この方法でjavacはクラス#2のメソッドが存在し、救済の必要がないことを知ります。
  3. いいえインポートが必要です - ファイルは同じパッケージにあります。つまり、同じディレクトリにあります。 Javacはの形式で何かを渡したかったのですが、classnameしか提供していませんでした。あなたが書いたように、ソースコード内のクラスは、拡張た.javaに持っている必要がありながら、コンパイルされたバイトコードとして

クラスは、拡張の.classに持っている必要があります。

+0

Downvoter、何が間違っていたのか教えてください。 –

-1

次のコマンドを試してみてください。ファイルがあるのと同じディレクトリにあります。

javac * .java

+2

これはインポートの問題に役立たない。 –

関連する問題