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

它应该是:

爪哇

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 回答