1

ここで、何が間違っているのかよくわかりません。ディレクトリに2つのファイルがあり、それらをFileA.javaとFileB.javaと呼びましょう。

FileA.javaには、次のような定義があります。

package com.domain.package;

import stuff;
import package.FileB;

public class FileA extends Blah implements Listener {
    /* global vars */
    /* methods */
}

FileB.javaは私のデータオブジェクトクラスであり、FileA.javaから次のように参照したいと思います。

Map<Object, FileB> varname;

次の線に沿って使用されます:

varname = new HashMap<Object, FileB>();

一方、FileB.javaは、次のように定義されます。

package com.domain.package;

import stuff;

public class FileB {
    /* global vars */
    public FileB() {
         /* stuff */
    }
}

なぜ私は得ています:

FileA.java:20: package package does not exist
import package.FileB;

?むしろ、どうすればそれを機能させることができますか?

4

4 に答える 4

1

両方のファイルが同じパッケージ(com.domain.package)に含まれているため、インポートする必要はまったくありませんFileB。直接参照できるはずです。

さらに、FileAFileBが両方のパッケージフォルダ(com / domain / package)に配置されていることを確認してください。

于 2013-03-20T18:17:10.687 に答える
1

FileBのパッケージはですcom.domain.package。代わりに使用しようとしていますpackage.FileB

于 2013-03-20T18:17:22.353 に答える
1

package予約語です。パッケージ名の一部として使用しないでください。Eclipseで「package」を含むパッケージを追加しようとすると、次のエラーメッセージが表示されます。

Invalid package name. 'package' is not a valid Java identifier

パッケージの名前を変更してから、importステートメントを削除します。で参照されているものと同じパッケージにあるファイルをインポートする必要はありません。

于 2013-03-20T18:33:02.310 に答える
0

@rgettmanには正しい解決策があります。を使用して両方のファイルをコンパイルするとjavac FileA.java FileB.java、この問題が解決します。彼の提案を使用することもできます。javac *.java

于 2013-03-20T18:38:44.177 に答える