java包:找不到符号

时间:2012-07-17 17:43:34

标签: java packages

我有一个奇怪的错误。我在同一个包中有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;时,它们编译正常。

2 个答案:

答案 0 :(得分:4)

由于您正在编译不同包中的Java文件,因此您必须确保它们编译到适当的目录。

您可以使用此调用来执行此操作。将$SRC替换为源文件的位置,您可以让$BIN成为当前目录或计算机上的其他位置。

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

当你想要运行它们时,你必须再次手动将它们添加到类路径中(但这不是一件坏事)。

java -cp $BIN com.mypackage.B

此调用应该有效;只是确定了A.java和B.java驻留在我的桌面上。使用-d标志,确保在编译时,它们转到相应的包文件夹方案。

答案 1 :(得分: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();
    }
}