4

奇妙なエラーが発生しています。同じパッケージに2つのクラスがありますが、お互いを見つけることができません。私が覚えていることから、クラスが同じパッケージにある限り、それらはお互いのメソッドを呼び出すことができるはずです。

私のコードは次のようになります。

A.javaの場合:

package com.mypackage;
public class A{
   public static int read(){
    //some code
   }
}

B.javaの場合:

package com.mypackage;
public class B{
  public static void main(String args[]){
    int x = A.read();
  }
}

cannot find symbol variable Aそしてそれは私にエラーを与えています。

これらのクラスは両方ともいくつかの.jarファイルに依存していますが、私はすでにそれらのjarのパスを含めて正常CLASSPATHA.javaコンパイルしましたが、Bは何らかの理由でAを見つけることができません...

両方のクラスでを削除すると、package com.mypackage;正常にコンパイルされます。

4

2 に答える 2

4

個別のパッケージに含まれるJavaファイルをコンパイルするため、適切なディレクトリにコンパイルされることを確認する必要があります。

この呼び出しを使用して、まさにそれを行うことができます。ソースファイルの場所に置き換えれば、現在のディレクトリ、またはマシン上の他の場所にする$SRCことができます。$BIN

javac -sourcepath $SRC -d $BIN A.java B.java

それらを実行する場合は、それらを手動でクラスパスに再度追加する必要があります(ただし、これはそれほど悪いことではありません)。

java -cp $BIN com.mypackage.B

この呼び出しは機能するはずです。デスクトップにあるA.javaとB.javaで確認しました。フラグを使用-dすると、コンパイル時に適切なパッケージフォルダスキームに移動することが保証されます。

于 2012-07-17T18:01:31.863 に答える
3

そのはず:

A.java

package com.mypackage;
class A {
    public static int read(){
       //some code
    }
}

B.java

package com.mypackage;
class B {
    public static void main(String args[]){
       int x = A.read();
    }
}
于 2012-07-17T17:46:22.640 に答える