java 包:找不到符号

Dao*_*Lam 4 java package

我遇到了一个奇怪的错误。我在同一个包中有 2 个类,但它们无法找到彼此。据我记得,只要类位于同一个包中,它们就应该能够调用彼此的方法。

我的代码看起来与此类似:

在A.java中:

package com.mypackage;
public class A{
   public static int read(){
    //some code
   }
}
Run Code Online (Sandbox Code Playgroud)

在B.java中:

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

它给了我一个cannot find symbol variable A错误。

这两个类都依赖于一些.jar文件,但我已经包含了这些 jar 的路径CLASSPATHA.java编译得很好,但由于某些原因 B 找不到 A...

当我删除package com.mypackage;两个类中的 时,它们编译得很好。

Mak*_*oto 5

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

您可以使用此调用来做到这一点。替换$SRC为源文件的位置,您可以将$BIN其设为当前目录或计算机上的其他位置。

javac -sourcepath $SRC -d $BIN A.java B.java
Run Code Online (Sandbox Code Playgroud)

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

java -cp $BIN com.mypackage.B
Run Code Online (Sandbox Code Playgroud)

这个调用应该有效;只是通过我的桌面上的 A.java 和 B.java 确保了这一点。使用该-d标志,可以确保编译时进入适当的包文件夹方案。