0

パッケージ化する前に問題なくコンパイル/実行される一連の Java ファイルをパッケージ化しようとしています。最初の行にパッケージを追加した後、次のエラーが発生します!

cannot find symbol 
symbol: class Person

同じエラーが発生する単純化されたコード スニペットを次に示します。

-Person.java

package people;
abstract public class Person
{
// some code
} 

-女性.java

package people;
public class Female extends Person
{   
Female(){}
    // some code
}
4

2 に答える 2

1

「パッケージ化」とはpackage、ソースコードに「宣言を追加した後」という意味ですか?

もしそうなら、Javaパッケージがソースファイルが存在する実際のディレクトリを反映する必要があることを省略したと思います。動作させるにはpackage people;、という名前のディレクトリを作成し、peopleそこにソースファイルを配置する必要があります。

を使用していると思いますがjavac、両方のファイルを同時にコンパイルすると、javac *.javaこれで問題なく動作するはずです(適切なディレクトリにファイルがない場合でも)。javacただし、それらを個別にコンパイルする場合は、の親ディレクトリから実行する必要がありますpeople

$ mkdir people
$ mv Person.java Female.java people/
$ javac people/Person.java
$ javac people/Female.java
于 2013-03-22T01:33:23.030 に答える
1

「シンボルが見つかりません」は通常、使用しようとしている識別子をコンパイラが見つけられないことを意味します。ここでは、Person クラスが見つからないようです。このエラーはクラス Female でスローされていると思います。

ソースファイルをどのようにコンパイルしていますか? Eclipse のような IDE を使用していますか、それともコマンドラインからコンパイルしていますか? IDE を使用している場合は、問題の特定に役立ちます。

コマンド ラインからコンパイルする場合は、クラス Female の前に Person をコンパイルする必要があります。クラスファイルはパッケージ内にあるため、ソースのルートからファイルをコンパイルする必要があります

例 - Person.java と Female.java はパッケージ "pack" の中にあります。これは私がコンパイルする方法です

D:\Applications\eclipse\eclipse-workspace\Test\src>javac pack\*.java
D:\Applications\eclipse\eclipse-workspace\Test\src>
于 2013-03-22T01:37:20.230 に答える